Utilia

Decodor JWT

Decodează antetul și conținutul unui JWT, citește exp, iat și nbf ca date și verifică semnături HS256, RS256, PS256, ES256 sau EdDSA în browserul tău.

Token-urile sunt credențiale. Acest instrument le decodează și le verifică în browserul tău și nu le trimite nicăieri.

Verifică semnătura

HS256/384/512: introdu secretul comun. RS, PS, ES (256/384/512) și EdDSA: lipește cheia publică ca PEM (cheie publică, cheie publică RSA sau certificat) sau JWK (un JWK Set este potrivit după kid).

Cum decodezi un JWT

  1. Lipește token-ul în câmpul JSON Web Token. Merge și o valoare completă Authorization: Bearer …: prefixul Bearer și eventualele rupturi de rând sunt eliminate.
  2. Token-ul este decodat pe măsură ce scrii (sau apasă Decodează). Antet și Conținut (payload) apar ca JSON formatat, fiecare cu propriul buton Copiază.
  3. Citește tabelul Revendicări de timp: exp, nbf și iat sunt afișate cu valoarea brută, data în fusul tău orar, un timp relativ („peste 3 ore”, „acum 2 zile”) și o stare, de exemplu Expirat sau Încă nevalabil.
  4. Verifică avertismentele de deasupra rezultatelor, de pildă atunci când alg este none sau când o dată pare să fie în milisecunde.
  5. Pentru a verifica semnătura, completează cheia în secțiunea Verifică semnătura și apasă Verifică semnătura.

Decodarea nu înseamnă verificare

Un JWT are trei părți Base64url separate prin puncte: header.payload.signature. Antetul și conținutul sunt doar codificate, nu criptate, deci oricine deține token-ul le poate citi, iar acest instrument poate decoda orice token fără cheie. Asta înseamnă și că un conținut decodat nu dovedește nimic: cineva l-ar fi putut modifica. Doar o semnătură validă arată că token-ul a fost emis de deținătorul cheii și că nu a fost schimbat de atunci. De aceea, linia de stare spune „Decodat (semnătură neverificată)” până când o verifici.

Un token cu cinci părți este un JWE (JWT criptat); conținutul lui nu poate fi citit fără cheia de decriptare, iar instrumentul te anunță.

Verificarea semnăturii

  • HS256, HS384, HS512 (HMAC): introdu Secretul comun. Din Format secret alegi dacă este text simplu (UTF-8) sau Base64/Base64url, deoarece unii furnizori păstrează secretele în Base64. Poți lipi și un JWK de tip oct. Dacă secretul este mai scurt decât rezultatul funcției hash (32 de octeți pentru HS256), instrumentul notează că este sub minimul din RFC 7518.
  • RS256/384/512, PS256/384/512, ES256/384/512 și EdDSA: lipește Cheie publică (PEM sau JWK). Blocurile PEM acceptate sunt PUBLIC KEY, RSA PUBLIC KEY și CERTIFICATE (cheia se citește din certificatul X.509). Funcționează și un JWK sau un JWK Set întreg: se folosește cheia al cărei kid se potrivește cu antetul. Cheile private sunt refuzate; un verificator nu are nevoie niciodată de ele. EdDSA acceptă Ed25519 în browserele al căror Web Crypto îl implementează.

Verificarea folosește API-ul Web Crypto al browserului. Rezultatul „Semnătură invalidă” înseamnă că cheia este greșită sau că token-ul a fost modificat. Reține că algoritmul este luat din antetul token-ului: un server real trebuie, dimpotrivă, să fixeze algoritmul așteptat în configurație, altfel un atacator îl poate alege.

Note de securitate

  • Token-urile sunt credențiale. Oricine deține un token de acces valid poate de obicei acționa în numele proprietarului până la expirare. Acest instrument decodează și verifică totul în browserul tău și nu trimite nicăieri token-ul sau cheia. Totuși, evită să lipești token-uri de producție în instrumente pe care nu le poți inspecta.
  • alg: none înseamnă că token-ul nu este semnat. Oricine poate falsifica unul, iar un server trebuie să îl respingă. Instrumentul afișează un avertisment și refuză să „verifice” un astfel de token.
  • Verificările de timp de aici folosesc ceasul calculatorului tău, fără nicio toleranță; serverele permit adesea o diferență de ceas de un minut sau două.
  • Datele JWT (NumericDate) sunt exprimate în secunde de la 1 ianuarie 1970 UTC. O valoare de 13 cifre este probabil în milisecunde, o greșeală frecventă.

Întrebări frecvente

Îmi poate spune acest instrument dacă un token este valid?

Poate spune dacă semnătura corespunde unei chei pe care o furnizezi și dacă exp și nbf sunt respectate chiar acum. Dacă token-ul este acceptat depinde însă și de verificări pe care le cunoaște doar serverul: emitentul așteptat (iss), audiența (aud), algoritmul și revocarea.

De ce eșuează verificarea cu secretul corect?

Verifică Format secret: un secret Base64 introdus ca text dă o cheie diferită. Asigură-te și că nu s-a adăugat vreun spațiu sau vreo ruptură de rând în secret, deoarece cheile HMAC se compară octet cu octet.

Care este diferența dintre RS256, PS256 și ES256?

Toate trei sunt semnături cu cheie publică și SHA-256. RS256 folosește RSA cu padding PKCS#1 v1.5, PS256 folosește RSA cu padding PSS, iar ES256 folosește ECDSA pe curba P-256, care produce semnături mult mai scurte.

Unde găsesc cheia publică a unui furnizor?

Furnizorii de identitate publică un JWKS (JSON Web Key Set), de obicei indicat în /.well-known/openid-configuration la jwks_uri. Deschide-l singur și lipește JSON-ul aici; instrumentul alege cheia după kid și nu descarcă nimic.

Este sigur să lipesc token-ul aici?

Token-ul rămâne pe dispozitivul tău: decodarea și verificarea au loc local și nu se încarcă nimic. Pentru mai multă siguranță, folosește un token expirat sau de test atunci când vrei doar să îi inspectezi structura.