Iddekowdja JSON Web Token (JWT)

jiddekowdja t-token JWT (JSON Web Token) tiegħek u juri l-informazzjoni li jinkludi b'mod qari u strutturat

X'inhu JWT (JSON Web Token)?

JSON Web Token, imqassar għalJWT(pronunzjata "jot"), huwa format kompatt definit minnRFC 7519li jippermetti t-trasport ta 'serje ta' pretensjonijiet (talbiet) bejn żewġ partijiet. JWT, jew JWT token, huwa l-format dominanti llum biex twassal identità awtentikata f'API HTTP. JWT jidher bħala string ASCII magħmul minntliet segmenti separati minn punti:

header.payload.signature

Kull segment huwa kodifikat f'Base64URL, varjant ta' Base64 mingħajr ikkuttunar = u li jissostitwixxi + b'- u / bi _ sabiex tkun tista 'tgħaddi minn URL jew header HTTP mingħajr ma jaħrab addizzjonali.

Importanti: JWT MHUX encrypted. Il-format standard JWT (JWS) huwa sempliċiment iffirmat: il-firma tiggarantixxi l-integritàtal-kontenut, iżda ma jipprovdi ebdakunfidenzjalità. Kulħadd jista' jiddekodifika tagħbija JWT b'reverse Base64URL sempliċi, kif tagħmel din l-għodda onlajn jwt decode.

Anatomija ta' JWT

json web token huwa magħmul minn tliet partijiet distinti ħafna, kull waħda għandha rwol speċifiku fil-mekkaniżmu ta' awtentikazzjoni:

1. Header

L-header huwa oġġett JSON li jiddeskrivi kif it-token jiġi ffirmat. Fih mill-inqas:

  • alg (algoritmu): l-algoritmu tal-firma użat. Valuri tipiċi: HS256, RS256, ES256, EdDSA.
  • tip (tip): it-tip tat-token, kważi dejjem "JWT".
  • kid (ID taċ-ċavetta): mhux obbligatorju, jidentifika liema ċavetta għandha tintuża biex jivverifika l-firma. Prattiku fil-preżenza ta 'sett ta' ċwievet li jduru (JWKS).

2. Tagħbija

It-tagħbija fiha l-klejms, jiġifieri t-talbiet li jagħmel l-emittent dwar l-utent jew is-sessjoni. RFC 7519 jiddefinixxi seba’ talbiet standard (reġistrati pretensjonijiet):

  • iss (emittent): min ħareġ it-token, pereżempju "https://accounts.google.com".
  • sub (suġġett): min għandu t-token, fil-prattika l-ID tal-utent.
  • aud (udjenza): għal min hu maħsub it-token. Evita token maħruġa għall-API A hija aċċettata mill-API B.
  • exp (ħin ta' skadenza): Timestamp Unix li warajh it-token m'għadux validu.
  • nbf (mhux qabel): timestamp li qabel ma jkunx it-token għadu attiv.
  • iat (maħruġ fi): marka taż-żmien tal-ħruġ tat-token.
  • jti (JWT ID): identifikatur uniku tat-token, użat għal revoka u prevenzjoni ta' replay.

Ma 'dawn it-talbiet standard huma ġeneralment miżjudaklejms tad-dwanaspeċifiċi għal l-applikazzjoni (rwoli, ambitu, tenant_id, email, permessi...).

3. Firma

Il-firma hija kondensat kriptografiku kkalkulat fuq base64url(header) + "." + base64url(payload) billi tuża ċavetta. Hija hi li tipprova li ħadd ma mmodifika l-header jew il-payload mindu x-xandira. L-aktar algoritmi komuni:

  • HS256 / HS384 / HS512: Firma simmetrika HMAC-SHA. Ċavetta sigrieta kondiviża bejn l-emittent u l-verifikatur. Sempliċi, iżda mhux adattat meta jkun hemm aktar minn konsumatur wieħed.
  • RS256 / RS384 / RS512: firma RSA asimmetrika. It-trasmettitur jiffirma biċ-ċavetta tiegħu privat, kwalunkwe konsumatur jivverifika biċ-ċavetta pubblika korrispondenti. Standard de facto għal OAuth2 u OpenID Connect.
  • ES256 / ES384 / ES512: Firma asimmetrika ECDSA. L-istess proprjetajiet bħal RS256 iżda b'ċwievet u firem ħafna iqsar.
  • EdDSA (Ed25519): firma asimmetrika moderna, veloċi u kompatta.

Għal darb'oħra:il-firma tipproteġi l-integrità, mhux il- kunfidenzjalità. Il- payload jibqa' jinqara minn kull min għandu t-token.

Għaliex jiddekowdja JWT?

L-jwt token decodel-operazzjoni tissodisfa diversi ħtiġijiet konkreti għal żviluppatur jew inġinier tas-sigurtà:

  • Debug tal-Awtentikazzjoni: l-API tiegħek jirritorna 401 jew 403, trid tara x'inhu fil-fatt fit-tagħbija (sub, skop, rwoli, exp) aktar milli guessing.
  • Iċċekkja t-talbiet: ikkonferma li token fih it-talba mistenni (eż. tenant_id jew permessi) qabel ma tfittex x'imkien ieħor fil-katina tal-awtorizzazzjoni.
  • Aqra l-iskadenza: ikkonverti timestamp exp għal data umana għal tikkonferma li token skada, jew għall-kuntrarju li għandu jkun għadu validu.
  • Verifika tas-sigurtà: tiżgura li servizz ta’ parti terza ma joħroġx informazzjoni sensittivi fit-tagħbija (emails, identifikaturi interni, data personali).
  • Taħriġ u fehim: ara b'mod konkret dak a jsonwebtoken li joħroġ minn fornitur OAuth (Google, Auth0, Keycloak, AWS Cognito) għal tifhem il-mekkanika mingħajr ma tgħaddas fid-doks.
  • Esplorazzjoni ta’ tokens pubbliċi: spezzjona JWT li jinstab fiz-zkuk, f’ cookie jew fi skambju OAuth interċettabbli.

Decoder vs Verifier: id-distinzjoni kritika

Iż-żewġ operazzjonijiet jidhru simili iżda m'għandhom x'jaqsmu xejn f'termini ta' garanziji ta' sigurtà:

  • Id-dekodifikazzjoni ta' JWT tikkonsisti fil-qsim tas-sekwenza fuq il-. u applika Base64URL invers għall-ewwel żewġ segmenti. Huwa qari sempliċi, li jistgħu jintlaħqu ta’ kwalunkwe kitba ta’ tliet linji. L-ebda verifika tal-firma ma jsirx.
  • Il-verifika ta' JWT tikkonsisti fil-kalkolu mill-ġdid tal-firma mill-header, payload u ċavetta, imbagħad tqabbel ir-riżultat mal-firma preżenti fit-token. Huwa litiggarantixxi li t-token ma ġiex imbagħbas.

Konklużjoni prattika:dekodifikazzjoni mhux ta 'min jafda. Sakemm il-firma ma ġiex ivverifikat biċ-ċavetta korretta, il-kontenut tat-tagħbija jista 'jkun kompletament falz. Għall- fażi ta’ fiduċja, uża l-JWT Verifier tagħna.

Kif tużah

  1. Ikseb il-JWT biex jispezzjona, pereżempju minn header Awtorizzazzjoni: Bearer , minn cookie tas-sessjoni, mill- localStorage mill-browser, jew minn log tal-applikazzjoni.
  2. Waħħal is-sekwenza sħiħa fil-qasam tad-dħul. It-tliet segmenti għandhom jibqgħu separati minn punti.
  3. L-għodda immedjatament turi l-header dekodifikat f'JSON ifformattjat, bil l-algoritmu u t-tip.
  4. Il-tagħbija imbagħad tiġi dekodifikata u murija. Inti tara l-pretensjonijiet kollha hemmhekk standard u drawwa.
  5. L-għodda tindika wkoll l-informazzjoni dwar il-firma (algoritmu ddikjarat, tul), mingħajr ma tiċċekkjaha.
  6. Biex tikkonferma li t-token ma ġiex imbagħbas, aqleb għal tagħna JWT Verifier biċ-ċavetta pubblika jew sigrieta mistennija.

Id-dekodifikazzjoni kollha ssir fil-browser tiegħek f'JavaScript: it-token tiegħek qatt ma jintbagħat għas-servers tagħna.

JWT u sigurtà: in-nases li għandhom jiġu evitati

QATT taħżen data sensittiva fit-tagħbija ta' JWT iffirmat.

Passwords, numri ta' karti ta' kreditu, data medika, sigrieti API, identifikaturi interni kritiċi: kollox fil-payload huwajinqara minn kulħadd tippossjedi t- token, inkluż l-utent innifsu permezz tal-għodod tal-iżviluppatur tal browser tiegħu. Il-firma ma taħbi xejn, hija biss tipprova li l-emittent huwa tabilħaqq min jgħid li hu.

Ftit regoli tad-deheb għall-użu tajjeb ta' JWT fil-produzzjoni:

  • Dejjem iċċekkja l-firma min-naħa tas-server qabel tagħti kwalunkwe dritt. Il-JWT Verifier tagħna juri eżattament din l-operazzjoni.
  • Ippreferi RS256 jew ES256 għal HS256 għall-APIs pubbliċi. Il-firma asimmetriku jevita li taqsam sigriet bejn it-trasmettitur u kull konsumatur.
  • Dejjem irrispetta t-talba exp. A JWT mingħajr skadenza jew bi l-exhaling wisq 'il bogħod hija bomba tal-ħin fil-każ ta' tnixxija.
  • Ivvalida iss u aud fuq in-naħa tas-server, biex tevita token leġittimu maħruġ għal servizz ieħor huwa aċċettat bi żball.
  • Irrifjuta alg: "xejn" min-naħa tal-verifika. Dan huwa difett klassiku li jippermetti lil attakkant li jifforma kwalunkwe tagħbija.
  • Żomm it-tul tal-ħajja qasir (15-il minuta per eżempju) u għaqqad ma' a refresh token itwal iżda revokabbli fuq in-naħa tas-server.

Eżempju ta' token JWT dekodifikat

Hawn hemm JWT tipiku:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiSm9obi IsImlhdCI6MTUxNjIzOTAyMn0.jrU9j8LZcRK2_BZjqXjU7lEpJbkqmXfTQIu9vT45j-I

Ladarba jiġi dekodifikat, hawn hu l-kontenut tiegħu:

// Header
{
  "alg": "HS256",
  "tip": "JWT"
}

// Tagħbija
{
  "sub": "123",
  "isem": "Ġwanni",
  "iat": 1516239022
}

// Firma (binarja, kodifikata Base64URL)
HMACSHA256(
  base64url(header) + "." + base64url (tagħbija),
  sigriet
)

Fejn issib JWT biex tikkopja?

Fil-prattika, JWT biex decrypt(fis-sens ta' dekodifikazzjoni) ħafna drabi jiġi minn waħda minn dawn postijiet:

  • HTTP Cookie: iftaħ l-għodod ta' żvilupp (F12), tab Applikazzjoni jew Ħażna, imbagħad Cookies. Sib cookie msemmija access_token, jwt, sessjoni jew simili.
  • localStorage / sessionStorage: l-istess panel, taqsima Ħażna Lokali. Ħafna SPAs jaħżnu t-token tagħhom hemmhekk taħt ċavetta token jew auth.
  • Awtorizzazzjoni header: Netwerk tab, agħżel waħda Talba API, aqra l-intestatura Awtorizzazzjoni: Bearer . Ikkopja biss il- parti wara Bearer .
  • Reġistri tas-server: JWT kultant jidher fir-reġistru ta’ gateway jew reverse proxy (biex jiġi evitat fil-produzzjoni, iżda utli fid-debug).

Mistoqsijiet frekwenti

Eżempju ta' talba

curl -X POST https://cdrn.fr/api/v1/tools/jwt-decoder/execute \
  -H "Content-Type: application/json" \
  -d '{"token":"..."}'

Skema ta' input

Kamp Tip Meħtieġ Default
token text

Endpoints

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