Oħloq JSON Web Token (JWT) iffirmat

jiġġenera JWT iffirmat (HS256, HS384, HS512) minn payload JSON u segret HMAC, lest għall-ittestjar tal-API tiegħek jew tokens ta' awtentikazzjoni

X'inhu JWT Builder?

JWT Builderhija għodda onlajn li tipproduċi JSON Web Token iffirmat (JWT) minn tagħbija JSON u sigriet HMAC. Hija mmirata lejn l-iżviluppaturi li għandhom bżonn biex tiġġenera malajr token tat-test biex tiċċekkja l-imġieba ta 'API, tissimula sessjoni awtentikata fi Postman, jew tirriproduċi bug relatat mal-iskadenza jew l-ambitu ta’ token.

B'differenza minn decoder JWT tagħna, li jaqra biss token eżistenti, JWT Builderjagħmel token komplut: jibni l-header, jikkodifika l- payload, tikkalkula l-firma HMAC u tiġbor kollox f'format kompatt header.payload.signature mistenni mil-libreriji kollha JWT fis-suq.

Għaliex tiġġenera JWT?

Bennej JWT mhuwiex maħsub biex joħroġ tokens tal-produzzjoni. Huwa fuq kollox għodda għal żvilupp u ttestjar. Hawn huma l-aktar xenarji komuni:

  • Testijiet ta' integrazzjoni: tipproduċi JWTs prevedibbli biex issuq testijiet E2E li jolqtu endpoints protetti mingħajr ma jiddependu fuq il-fornitur tal-identità reali.
  • API Mocks: Ibdel temporanjament sejħa lill-IdP b'JWT iffirmat lokalment bl-istess sigriet tat-test.
  • Żvilupp lokali: qabbad mal-backend tiegħek billi tiġġenera manwalment a token li fih it-talbiet mixtieqa, mingħajr ma jkollok bżonn tgħaddi mill-fluss OAuth2 kollu.
  • Dimostrazzjonijiet: juru vjaġġ ta' awtentikazzjoni jew fluss tax-xogħol ibbażat fuq permessi mingħajr ma jkollok IdP reali fuq naħa.
  • Riproduzzjoni tal-bug: ssawwar token skadut, token b'a aud inkorretta, token mingħajr ċerti pretensjonijiet, biex jiġu ttestjati l-mogħdijiet tal-iżbalji API tiegħek.
  • Debugging ta' parser personalizzat: injetta JWTs mibnija apposta għalihom ittestja parser homemade.

Kompożizzjoni ta' JWT

JWT iffirmat huwa magħmul minn tliet segmenti separati b'tikka, kull wieħed kodifikat fih Base64URL (varjant ta' Base64 mingħajr padding u b'-/_ fi minflok +//):

  • Header: oġġett JSON li jiddeskrivi l-algoritmu tal-firma u t-tip tat-token, pereżempju {"alg":"HS256","typ":"JWT"}. JWT Builder awtomatikament jiġġeneraha minn tal-algoritmu li tagħżel.
  • Tagħbija: oġġett JSON arbitrarju li fih it-pretensjonijiet tat-token (suġġett, permessi, dati ta’ skadenza). Din hija l-parti li tipprovdi.
  • Firma: HMAC-SHA ikkalkulat fuq konkatenazzjoni base64url(header) + "." + base64url(payload)maċ-ċavetta sigrieta tiegħek. Hija hi li jiggarantixxi l-integrità tat-token.

Każijiet ta' użu fid-dettall

  • Mock ta' l-API għall-ittestjar E2E: is-Cypress jew il-Playwright suite tiegħek iridu jsejħu API li teħtieġ Awtorizzazzjoni: Bearer.... Pjuttost milli orkestrazzjoni ta 'login komplut fuq kull test, aħna niffirmaw JWT fuq il-fly bis-sigriet kondiviż u injettah fil-header.
  • SSO Demo: ippreżenta vjaġġ ta' awtentikazzjoni federata mingħajr ma tiddependi ta’ IdP onlajn.
  • Apparat tat-Test: iġġenera JWT deterministiku minn tagħbija magħrufa iservu bħala apparat stabbli fit-testijiet tal-unità.
  • Dijanjosi ta' parser personalizzat: ttestjar ta' parser JWT magħmul mid-dar b'tokens deliberatament minimu jew deliberatament stramb (klejms nieqsa, tipi mhux mistennija).
  • Tagħlim: tifhem b'mod konkret kif jinbena JWT, fi timmodifika t-tagħbija u tara l-bidla tal-firma.

Algoritmi appoġġjati: HS256, HS384, HS512

L-għodda tagħna tappoġġja t-tliet algoritmi standardHMAC tal-ispeċifikazzjoni JWT (RFC 7519):

  • HS256: HMAC ma SHA-256. Firma ta' 32 byte. L-aktar użat fil-prattika, kompromess tajjeb bejn il-veloċità u s-solidità kriptografika. Rakkomandat awtomatikament.
  • HS384: HMAC ma SHA-384. Firma ta' 48 byte. Adattat għal kuntesti li jeħtieġu marġini ta' sikurezza ogħla.
  • HS512: HMAC ma SHA-512. Firma ta' 64 byte. L-aktar robust, bil-prezz ta’ token kemmxejn akbar.

HMAC jew RSA?

L-HS*algoritmi huma simmetriċi: l-istess ċavetta tintuża biex tiffirma u tivverifika. Huwa ta 'malajr u faċli, iżda dan ifisser li kwalunkwe servizz li jista' jivverifika token huwa wkoll kapaċi jarmuhom. Jekk għandek bżonn tissepara dawn iż-żewġ rwoli (emittent wieħed, multiplu konsumaturi), iduru għall-RS256/RS384/RS512algoritmi (RSA, asimmetriċi), li tista' tivverifika bil-verifikatur JWT tagħna.

Sigurtà: tipproteġi s-sigriet tiegħek

Is-sigurtà ta 'JWT iffirmat f'HMAC tiddependiinterament fuq il-kunfidenzjalità tas-sigriet. Xi regoli bażiċi:

  • Uża sigriet twil u każwali. RFC 7518 jirrakkomanda mill-inqas id-daqs tal-output tal-algoritmu (32 byte għal HS256, 48 għal HS384, 64 għal HS512). Password bniedem bħal azerty123 huwa trivjalment brutali attakkabbli offline.
  • Qatt ma tiffirma JWT min-naħa tal-klijent. Is-sigriet jinstab fil-kodiċi JavaScript distribwit lill-browser, espost għal kull utent. Il-firma trid tibqa' dejjem naħa tas-server.
  • Aħżen is-sigriet f'varjabbli ambjentali (eż. JWT_SECRET), qatt f'repożitorju Git. Ikkunsidra li tuża kaxxa-forti bħal HashiCorp Vault, AWS Secrets Manager jew Sigrieti Symfony skond il-munzell tiegħek.
  • Dawwar is-sigriet regolarment (rotazzjoni taċ-ċavetta), speċjalment wara kwalunkwe inċident jew tluq ta’ persuna li kellha aċċess għall-konfigurazzjoni.
  • JWT Builder huwa għall-ittestjar u t-tagħlim. Għall-produzzjoni, uża l-librerija JWT tal-qafas tiegħek (lcobucci/jwt, firebase/php-jwt, jose-php).

Prattiki tajbin għal pretensjonijiet

It-tagħbija hija oġġett JSON b'xejn, iżda RFC 7519 jiddefinixxi sett ta' pretensjonijiet reġistrati li l-libreriji JWT jafu kif jinterpretaw. L-inklużjoni tal-pretensjonijiet it-tajba tagħmel it-token tiegħek portabbli u tevita bugs sottili:

  • iss (emittent): identifikatur tal-emittent, pereżempju "https://api.example.com".
  • sub (suġġett): identifikatur tal-persuna jew entità kkonċernata, ħafna drabi l-ID utent.
  • aud (udjenza): għal min hu maħsub it-token, biex jipprevjeni l-użu mill-ġdid ta’ token fuq API ieħor.
  • exp (ħin ta’ skadenza): Timestamp Unix li warajh it-token ma jibqax validu. Dejjem inkludi, anki għal token tat-test: token mingħajr skadenza huwa a drawwa ħażina diffiċli biex tikkoreġi wara.
  • nbf (mhux qabel): timestamp li qabel fih it-token għadu mhux validu. Utli għall-ħruġ minn qabel ta' token li jista' jiġi attivat aktar tard.
  • iat (maħruġ fi): marka tal-ħin tal-ħruġ, utli għall-illoggjar u r-revoka.
  • jti (JWT ID): identifikatur uniku tat-token, essenzjali għal idempotenzau biex timplimenta lista ta' revoka.

Eżempju ta' tagħbija tipika

{
  "iss": "https://api.example.com",
  "sub": "utent-12345",
  "aud": "mobile-app",
  "iat": 1714723200,
  "exp": 1714726800,
  "jti": "9f2d6b1e-2c4a-4f8a-9c3a-87a2b8a4b7e1",
  "scope": "read:profile write:profile"
}

Kif tuża l-għodda

  1. Daħħal it-tagħbija bħala JSON validu. Huwa oġġett, għalhekk jibda bih { u tispiċċa b'}.
  2. Speċifika s-sigriet tal-HMAC. Agħżel string twila bl-addoċċ għat-tokens tal-produzzjoni.
  3. Agħżel l-algoritmu: HS256 awtomatikament, HS384 jew HS512 skont il-bżonnijiet tiegħek.
  4. Ikklikkja oħloq. Jidher il-JWT iffirmat, lest biex jitwaħħal f'header Awtorizzazzjoni: Bearer....
  5. Imbagħad tista' tivverifika it-token bl-istess sigriet biex ikkonferma l-konsistenza tal-vjaġġ bir-ritorn, jew decode biex taqra mill-ġdid il-kontenut tagħha.

Mistoqsijiet frekwenti

Liema algoritmu tagħżel: HS256, HS384, HS512?

Għal kważi l-każijiet kollha,HS256hija l-għażla t-tajba. Joffri livell ta sigurtà perfettament suffiċjenti għal tokens ta 'awtentikazzjoni, b'firma kompatta (32 bytes) u kalkolu veloċi. HS384 u HS512 huma ġġustifikati biss f'kuntesti rekwiżiti regolatorji preċiżi jew jekk timmaniġġja tokens b'ħajja twila ħafna. Id-daqs ta Firma ogħla tagħmel kull talba HTTP itqal.

Kif niġġenera par RSA biex niffirma l-JWT tiegħi?

B'OpenSSL f'żewġ kmandi: openssl genrsa -out private.pem 2048 għaċ-ċavetta privat, imbagħad openssl rsa -in private.pem -pubout -out public.pem biex jiġi estratt iċ-ċavetta pubblika. Għal servizzi ġodda, issa nirrakkomandaw ċwievet tas-sigurtà. 3072 bit jew 4096 bit. Iċ-ċavetta privata tibqa' fuq in-naħa tal-mittent; iċ-ċavetta pubblika hija jiddistribwixxi liberament lil servizzi li jeħtieġu jivverifikaw it-tokens.

X'inhu l-ħin ta' skadenza rakkomandat?

Għal token ta' aċċess: 5 sa 15-il minuta. Għal token ta 'aġġornament: ftit jiem ftit ġimgħat, iżda b'mekkaniżmu ta' revoka min-naħa tas-server. Iktar ma jkun it-token ħajja twila, iktar tkun kbira t-tieqa operattiva fil-każ ta 'tnixxija. Għat-test JWTs, int jista' jieħu tul ta' żmien aktar ġeneruż, iżda evita exp għal diversi snin: dawn jispiċċaw jnixxu f'repożitorji Git.

Nista' niffirma b'ċavetta sigrieta qasira ħafna?

Teknikament iva, iżda huwaskoraġġut ħafna. Sigriet HMAC ta' inqas minn 16-il bytes huwa dgħajjef reżistenti għall-attakki offline brute force, u jinstab fil- natura ta 'għodod li jkissru JWT HS256 b'sigriet baxx f'sekondi. Il- RFC 7518 jirrakkomanda mill-inqas id-daqs tal-output tal-algoritmu: 32 bytes għal HS256, 48 għal HS384, 64 għal HS512. Iġġenera s-sigrieti tiegħek openssl rand -base64 64.

Għaliex it-tagħbija tiegħi hija miċħuda?

It-tagħbija għandha tkun oġġett JSON validu. Żbalji Komuni: Kwotazzjonijiet Uniċi Minflok jirdoppja, virgola żejda qabel }, valur mingħajr kwotazzjonijiet għal string. Ivvalida l-ewwel JSON tiegħek bil-formatter JSON tagħna.

Jista' l-JWT iġġenerat jiġi dekriptat minn xi ħadd ieħor?

JWT iffirmat huwamhux encrypted: it-tagħbija hija biss kodifikata Base64URL. Kollox id-dinja tista’ taqrah. Jekk it-tagħbija tkun fiha data sensittiva, uża l-format JWE (JSON Web Encryption) li żżid encryption. L-għodda tagħna tipproduċi JWS (iffirmata biss).

Eżempju ta' talba

curl -X POST https://cdrn.fr/api/v1/tools/jwt-builder/execute \
  -H "Content-Type: application/json" \
  -d '{"payload":"...","secret":"...","algorithm":"HS256"}'

Skema ta' input

Kamp Tip Meħtieġ Default
payload text
secret text
algorithm choice (HS256, HS384, HS512) HS256

Endpoints

  • GET https://cdrn.fr/api/v1/tools - telenka l-għodod kollha disponibbli
  • GET https://cdrn.fr/api/v1/tools/jwt-builder - tikseb l-iskema ta' din l-għodda
  • POST https://cdrn.fr/api/v1/tools/jwt-builder/execute - teżegwixxi din l-għodda b'payload JSON