Utilia

JWT dekoder

Dekodiraj zaglavlje i payload JWT tokena, pročitaj exp, iat i nbf kao datume te lokalno provjeri HS256, RS256, PS256, ES256 ili EdDSA potpis.

Tokeni su vjerodajnice. Ovaj alat ih dekodira i provjerava u tvom pregledniku i nikada ih nigdje ne šalje.

Provjeri potpis

HS256/384/512: unesi zajednički tajni ključ. RS, PS, ES (256/384/512) i EdDSA: zalijepi javni ključ kao PEM (javni ključ, RSA javni ključ ili certifikat) ili JWK (JWK Set se bira prema kid).

Kako dekodirati JWT

  1. Zalijepi token u polje JSON Web Token. Radi i cijela vrijednost Authorization: Bearer …: prefiks Bearer i prelomi redova se uklanjaju.
  2. Token se dekodira dok pišeš (ili klikom na Dekodiraj). Zaglavlje i Payload prikazuju se kao formatiran JSON, svaki sa svojim dugmetom Kopiraj.
  3. Pogledaj tabelu Vremenski podaci: exp, nbf i iat prikazani su s izvornom vrijednošću, datumom u tvojoj vremenskoj zoni, relativnim vremenom („za 3 sata“, „prije 2 dana“) i statusom, na primjer Istekao ili Još ne vrijedi.
  4. Pročitaj upozorenja iznad rezultata, na primjer kada je alg jednak none ili kada datum izgleda kao milisekunde.
  5. Da provjeriš potpis, unesi ključ u odjeljku Provjeri potpis i klikni na Provjeri potpis.

Dekodiranje nije provjera

JWT se sastoji od tri Base64url dijela odvojena tačkama: zaglavlje.payload.potpis. Zaglavlje i payload su samo kodirani, a ne šifrovani, pa ih može pročitati svako ko ima token, a ovaj alat može dekodirati bilo koji token bez ključa. To znači i da dekodirani payload ništa ne dokazuje: neko ga je mogao izmijeniti. Samo ispravan potpis pokazuje da je token izdao vlasnik ključa i da od tada nije mijenjan. Zato statusna linija piše „Dekodirano (potpis nije provjeren)“ sve dok potpis ne provjeriš.

Token s pet dijelova je JWE (šifrovani JWT). Njegov sadržaj se ne može pročitati bez ključa za dešifrovanje, a alat ti to i javlja.

Provjera potpisa

  • HS256, HS384, HS512 (HMAC): unesi zajednički Tajni ključ. U polju Format tajnog ključa odaberi je li riječ o običnom tekstu (UTF-8) ili o Base64/Base64url zapisu, jer neki provajderi čuvaju tajne ključeve u Base64. Možeš zalijepiti i JWK tipa oct. Ako je tajni ključ kraći od izlaza hash funkcije (32 bajta za HS256), alat napominje da je ispod minimuma iz RFC-a 7518.
  • RS256/384/512, PS256/384/512, ES256/384/512 i EdDSA: zalijepi Javni ključ (PEM ili JWK). Podržani PEM blokovi su PUBLIC KEY, RSA PUBLIC KEY i CERTIFICATE (ključ se čita iz X.509 certifikata). Radi i JWK ili cijeli JWK Set: koristi se ključ čiji kid odgovara zaglavlju. Privatni ključevi se odbijaju jer provjeri nikada nije potreban privatni ključ. EdDSA podržava Ed25519 u preglednicima čiji Web Crypto to implementira.

Provjera koristi Web Crypto API preglednika. Rezultat „Neispravan potpis“ znači da je ključ pogrešan ili da je token izmijenjen. Imaj na umu da se algoritam uzima iz zaglavlja tokena: pravi server mora očekivani algoritam fiksirati u svojoj konfiguraciji, inače ga napadač može sam odabrati.

Sigurnosne napomene

  • Tokeni su vjerodajnice. Ko ima važeći pristupni token, obično može djelovati kao njegov vlasnik dok token ne istekne. Ovaj alat sve dekodira i provjerava u tvom pregledniku te nikada ne šalje ni token ni ključ. Ipak izbjegavaj lijepiti produkcijske tokene u alate koje ne možeš pregledati.
  • alg: none znači da token nije potpisan. Svako ga može falsifikovati, a server ga mora odbiti. Alat prikazuje upozorenje i odbija „provjeriti“ takav token.
  • Vremenske provjere koriste sat tvog računara bez ikakve tolerancije, dok serveri često dopuštaju razliku od minut-dvije.
  • JWT datumi (NumericDate) su sekunde od 1. januara 1970. u UTC-u. Vrijednost od 13 cifara vjerovatno je u milisekundama, što je česta greška.

Česta pitanja

Može li mi ovaj alat reći je li token valjan?

Može ti reći podudara li se potpis s ključem koji uneseš i jesu li exp i nbf trenutno ispunjeni. Hoće li token biti prihvaćen, zavisi i od provjera koje zna samo server: očekivani izdavač (iss), publika (aud), algoritam i opoziv.

Zašto provjera ne uspijeva iako je tajni ključ tačan?

Provjeri Format tajnog ključa: Base64 tajni ključ unesen kao tekst daje drugačiji ključ. Pazi i da u ključ nije dospio razmak ili prelom reda, jer se HMAC ključevi porede bajt po bajt.

Koja je razlika između RS256, PS256 i ES256?

Sva tri su potpisi javnim ključem s SHA-256. RS256 koristi RSA s PKCS#1 v1.5 dopunom, PS256 RSA s PSS dopunom, a ES256 ECDSA na krivulji P-256, koji daje mnogo kraće potpise.

Gdje da nađem javni ključ provajdera?

Provajderi identiteta objavljuju JWKS (JSON Web Key Set), obično povezan iz /.well-known/openid-configuration pod jwks_uri. Otvori ga sam i ovdje zalijepi JSON: alat bira ključ prema kid i nikada ništa ne preuzima s mreže.

Je li sigurno zalijepiti svoj token ovdje?

Token ostaje na tvom uređaju: dekodiranje i provjera odvijaju se lokalno i ništa se ne šalje. Za dodatni oprez koristi istekli ili testni token kada želiš samo pregledati strukturu.