Utilia

Dekodues JWT

Dekodo header-in dhe payload-in e një JWT, lexo exp, iat dhe nbf si data dhe verifiko nënshkrimet HS256, RS256, ES256 ose EdDSA lokalisht në shfletuesin tënd.

Tokenët janë kredenciale. Ky mjet i dekodon dhe i verifikon ato në shfletuesin tënd dhe nuk i dërgon askund.

Verifiko nënshkrimin

HS256/384/512: shkruaj sekretin e përbashkët. RS, PS, ES (256/384/512) dhe EdDSA: ngjit çelësin publik si PEM (çelës publik, çelës publik RSA ose certifikatë) ose JWK (një JWK Set zgjidhet sipas kid).

Si ta dekodosh një JWT

  1. Ngjit tokenin te JSON Web Token. Funksionon edhe një vlerë e plotë Authorization: Bearer …: parashtesa Bearer dhe ndarjet e rreshtave hiqen automatikisht.
  2. Tokeni dekodohet ndërkohë që shkruan (ose kliko Dekodo). Header dhe Payload shfaqen si JSON i formatuar, secili me butonin e vet Kopjo.
  3. Lexo tabelën Pretendimet kohore: exp, nbf dhe iat shfaqen me vlerën e papërpunuar, datën në zonën tënde kohore, një kohë relative (“pas 3 orësh”, “2 ditë më parë”) dhe një gjendje si Ka skaduar ose Ende i pavlefshëm.
  4. Shiko paralajmërimet mbi rezultatet, për shembull kur alg është none ose kur një datë duket në milisekonda.
  5. Për të kontrolluar nënshkrimin, plotëso çelësin te Verifiko nënshkrimin dhe kliko Verifiko nënshkrimin.

Dekodimi nuk është verifikim

Një JWT përbëhet nga tri pjesë Base64url të ndara me pika: header.payload.signature. Header-i dhe payload-i janë vetëm të koduar, jo të enkriptuar, ndaj kushdo që e ka tokenin mund t’i lexojë, dhe ky mjet mund të dekodojë çdo token pa çelës. Kjo do të thotë gjithashtu se një payload i dekoduar nuk provon asgjë: dikush mund ta ketë ndryshuar. Vetëm një nënshkrim i vlefshëm tregon se tokeni është lëshuar nga zotëruesi i çelësit dhe nuk është modifikuar që atëherë. Prandaj rreshti i gjendjes shfaq “Dekoduar (nënshkrimi nuk është verifikuar)” derisa ta verifikosh.

Një token me pesë pjesë është JWE (JWT i enkriptuar); përmbajtja e tij nuk mund të lexohet pa çelësin e dekriptimit dhe mjeti ta tregon këtë.

Verifikimi i nënshkrimit

  • HS256, HS384, HS512 (HMAC): shkruaj Sekretin e përbashkët. Me Formati i sekretit zgjidh nëse është tekst i thjeshtë (UTF-8) apo Base64/Base64url, pasi disa ofrues e ruajnë sekretin në Base64. Mund të ngjitësh edhe një JWK të llojit oct. Nëse sekreti është më i shkurtër se dalja e hash-it (32 bajt për HS256), mjeti shënon se është nën minimumin e RFC 7518.
  • RS256/384/512, PS256/384/512, ES256/384/512 dhe EdDSA: ngjit Çelësin publik (PEM ose JWK). Blloqet PEM të pranuara janë PUBLIC KEY, RSA PUBLIC KEY dhe CERTIFICATE (çelësi lexohet nga certifikata X.509). Funksionon edhe një JWK ose një JWK Set i plotë: përdoret çelësi që përputhet me kid të header-it. Çelësat privatë refuzohen; një verifikues nuk ka nevojë për të. EdDSA mbështet Ed25519 në shfletuesit ku Web Crypto e ka të implementuar.

Verifikimi përdor API-n Web Crypto të shfletuesit. Rezultati “Nënshkrim i pavlefshëm” do të thotë se çelësi është i gabuar ose tokeni është modifikuar. Vëre që algoritmi merret nga header-i i tokenit: një server i vërtetë duhet ta fiksojë algoritmin e pritur në konfigurim, përndryshe një sulmues mund ta zgjedhë vetë.

Shënime sigurie

  • Tokenët janë kredenciale. Kushdo që ka një token aksesi të vlefshëm zakonisht mund të veprojë si pronari i tij deri sa të skadojë. Ky mjet dekodon dhe verifikon gjithçka në shfletuesin tënd dhe nuk e dërgon askund as tokenin, as çelësin. Megjithatë, shmang ngjitjen e tokenëve të produksionit në mjete që nuk mund t’i inspektosh.
  • alg: none do të thotë se tokeni nuk është i nënshkruar. Kushdo mund ta falsifikojë një të tillë dhe serveri duhet ta refuzojë. Mjeti shfaq një paralajmërim dhe nuk pranon ta “verifikojë” një token të tillë.
  • Kontrollet e orës këtu përdorin orën e kompjuterit tënd pa asnjë tolerancë; serverët shpesh lejojnë një a dy minuta shmangie të orës.
  • Datat JWT (NumericDate) janë sekonda nga 1 janari 1970 UTC. Një vlerë me 13 shifra ka gjasa të jetë në milisekonda, gabim shumë i zakonshëm.

Pyetje të shpeshta

A mund të më tregojë ky mjet nëse një token është i vlefshëm?

Mund të të tregojë nëse nënshkrimi përputhet me një çelës që ti jep dhe nëse exp e nbf plotësohen tani. Nëse tokeni pranohet varet edhe nga kontrolle që i di vetëm serveri: lëshuesi i pritur (iss), audienca (aud), algoritmi dhe revokimi.

Pse dështon verifikimi me sekretin e duhur?

Kontrollo Formatin e sekretit: një sekret Base64 i shkruar si tekst jep një çelës tjetër. Sigurohu gjithashtu që sekretit nuk i është shtuar hapësirë ose ndarje rreshti, sepse çelësat HMAC krahasohen bajt pas bajti.

Cili është ndryshimi mes RS256, PS256 dhe ES256?

Të tria janë nënshkrime me çelës publik dhe SHA-256. RS256 përdor RSA me mbushje PKCS#1 v1.5, PS256 përdor RSA me mbushje PSS, ndërsa ES256 përdor ECDSA mbi kurbën P-256, që jep nënshkrime shumë më të shkurtra.

Ku e gjej çelësin publik të një ofruesi?

Ofruesit e identitetit publikojnë një JWKS (JSON Web Key Set), zakonisht të lidhur nga /.well-known/openid-configuration te jwks_uri. Hape vetë dhe ngjit JSON-in këtu; mjeti zgjedh çelësin sipas kid dhe nuk merr kurrë asgjë nga interneti.

A është e sigurt të ngjis tokenin tim këtu?

Tokeni mbetet në pajisjen tënde: dekodimi dhe verifikimi bëhen lokalisht dhe asgjë nuk ngarkohet. Për kujdes shtesë, përdor një token të skaduar ose testues kur të duhet vetëm të inspektosh strukturën.