Oħloq JSON Web Token (JWT) iffirmat
- Dashboard
- Dokumentazzjoni
- API
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
audinkorretta, 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
azerty123huwa 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
- Daħħal it-tagħbija bħala JSON validu. Huwa oġġett, għalhekk jibda bih
{u tispiċċa b'}. - Speċifika s-sigriet tal-HMAC. Agħżel string twila bl-addoċċ għat-tokens tal-produzzjoni.
- Agħżel l-algoritmu: HS256 awtomatikament, HS384 jew HS512 skont il-bżonnijiet tiegħek.
- Ikklikkja oħloq. Jidher il-JWT iffirmat, lest biex jitwaħħal f'header
Awtorizzazzjoni: Bearer.... - 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 disponibbliGET https://cdrn.fr/api/v1/tools/jwt-builder- tikseb l-iskema ta' din l-għoddaPOST https://cdrn.fr/api/v1/tools/jwt-builder/execute- teżegwixxi din l-għodda b'payload JSON