UltKit

Decodor JWT

Lipiți un JSON Web Token și citiți header-ul și payload-ul ca JSON formatat. Momentele de expirare și de emitere apar ca date calendaristice, iar o notă vă arată dacă tokenul este valabil în acest moment. Decodarea are loc în întregime în browser, lucru important atunci când tokenul este o credențială activă.

0 caractere · 0 cuvinte · 0 rânduri

0 caractere · 0 cuvinte · 0 rânduri

Funcționează integral în această filă a browserului. Textul dvs. nu este încărcat și nici stocat.

Revendicări înregistrate

Cele șapte nume de revendicări definite în RFC 7519 §4.1. Toate sunt opționale; timpii sunt în secunde de la 1970-01-01 UTC.

RevendicareSemnificație
issEmitent: cine a creat și semnat tokenul
subSubiect: utilizatorul sau entitatea la care se referă tokenul
audAudiență: cui îi este destinat tokenul
expTimp de expirare: respingeți tokenul după acest moment
nbfNu înainte de: respingeți tokenul înainte de acest moment
iatEmis la: momentul în care a fost creat tokenul
jtiID JWT: identificator unic, folosit pentru a preveni reutilizarea

Valori alg uzuale

Valoare algSemnificație
HS256HMAC cu SHA-256; un singur secret comun semnează și verifică
RS256Semnătură RSA PKCS#1 v1.5 cu SHA-256; cheia privată semnează, cea publică verifică
PS256RSA-PSS cu SHA-256
ES256ECDSA pe curba P-256 cu SHA-256; semnături scurte
EdDSASemnături Ed25519 sau Ed448
noneToken nesemnat; serverele ar trebui să îl respingă

Structura unui JSON Web Token

JWT este definit în RFC 7519 (mai 2015), care recomandă pronunția ca în cuvântul englezesc „jot”. Forma semnată uzuală este alcătuită din trei șiruri Base64url unite prin puncte: header.payload.signature. Header-ul indică algoritmul de semnare în alg, de exemplu HS256 sau RS256, și adesea un ID de cheie în kid. Payload-ul conține claim-uri, adică câmpuri JSON precum sub (utilizatorul), iss (emitentul), aud (destinatarul vizat) și exp, nbf și iat, care sunt momente de timp exprimate în secunde de la 1 ianuarie 1970 UTC. Decodorul convertește aceste valori în ora locală și în ISO 8601 și vă spune dacă tokenul a expirat, nu este încă valid sau se află în intervalul de valabilitate.

Base64url este o codificare, nu o criptare, așa că oricine are un token îi poate citi payload-ul exact ca pe această pagină. Nu puneți niciodată parole, numere de card sau alte secrete în claim-uri. Un token cu cinci părți separate prin puncte este un JWE, adică un token criptat; conținutul lui nu poate fi citit fără cheie, iar decodorul vă anunță acest lucru. Prefixul „Bearer ” copiat dintr-un antet Authorization este eliminat automat.

De ce semnătura nu este verificată aici

Semnătura dovedește că header-ul și payload-ul au fost produse de cineva care deține cheia și că nu au fost modificate de atunci. Verificarea ei necesită acea cheie: secretul partajat pentru algoritmii HMAC precum HS256 sau cheia publică a emitentului pentru RS256, ES256 sau EdDSA. Introducerea unui secret de semnare din producție în orice pagină web este o idee proastă, iar un decodor care ar pretinde că garantează un token fără cheie ar crea o falsă siguranță, deci acest instrument afișează semnătura, dar nu o verifică. Considerați ce vedeți drept o afirmație făcută de token, nu drept un fapt.

Verificarea se face pe serverul dvs., cu o bibliotecă întreținută și cu algoritmul așteptat fixat. Două greșeli istorice explică de ce: acceptarea alg „none”, care permite oricui să falsifice un token nesemnat, și confuzia de algoritm, în care un server care așteaptă RS256 este păcălit să verifice o semnătură HS256 folosind cheia publică drept secret HMAC. Un decodor este util la depanare: vedeți ce claim-uri emite un furnizor, observați o audiență greșită sau aflați că o sesiune a eșuat pentru că exp a trecut cu un minut în urmă. Pentru a citi brut segmentele Base64url, folosiți decodorul Base64.

Întrebări frecvente

Este sigur să lipesc un token de acces real într-un decodor JWT?
Pe această pagină tokenul nu părăsește browserul. Totuși, un token valid funcționează ca o parolă până expiră, așa că preferați tokenuri expirate sau de test și nu le includeți pe cele active în capturi de ecran sau conversații.
De ce tokenul apare expirat, deși tocmai a fost emis?
Verificați mai întâi ceasul dispozitivului. Unii emitenți dau tokenurilor de acces o durată de viață de doar câteva minute, iar un token copiat dintr-un jurnal poate fi mai vechi decât pare. Un exp scris în milisecunde în loc de secunde produce efectul opus și ajunge cu mii de ani în viitor.
Poate cineva să modifice payload-ul tokenului meu JWT?
Îl pot edita și recodifica, dar semnătura nu se va mai potrivi. Un server care verifică semnăturile cu cheia și algoritmul corecte respinge tokenul modificat.
Care este diferența dintre JWS și JWE?
Un JWS (RFC 7515) este semnat, are trei părți și poate fi citit de oricine. Un JWE (RFC 7516) este criptat, are cinci părți și doar deținătorul cheii poate citi payload-ul.
Deconectarea invalidează un JWT?
Nu de la sine. Un JWT semnat rămâne valid până la exp, cu excepția cazului în care serverul ține o listă de blocare sau verifică o înregistrare de sesiune, de aceea tokenurile de acces au de obicei durate de viață scurte.