Vai al contenuto

header.payload.signature

Decodificatore JWT

Un JSON Web Token (JWT) è formato da 3 parti Base64url separate da punti: header, payload e firma. Incolla un token per leggerne claim e orari; qui viene decodificato, non verificato.

Il token resta in questa scheda e non viene inviato altrove. Un token decodificato non è un token attendibile: qui la firma non viene mai controllata.

Scanned by NortonTM Safe Web

In breve

Prezzo
Nessun costo
Account
Non serve
Standard
RFC 7519 (JWT), RFC 7515 (JWS), RFC 7516 (JWE)
Firma
Non verificata — il token viene solo decodificato
Orari
exp, nbf e iat mostrati in UTC e confrontati con il tuo orologio
Caricamento
Nessuno — il token resta nella scheda del browser

Un token di esempio e gli algoritmi più comuni

Il token di esempio di questa pagina è firmato con HMAC-SHA-256 usando una chiave usa e getta. La pagina lo ha decodificato per produrre la prima tabella.

Claim del token di esempio
ClaimValoreOrario (UTC)
issauth.example.com—
subuser-42—
audapi—
iat17000000002023-11-14 22:13:20 UTC
exp17000036002023-11-14 23:13:20 UTC
Algoritmi di firma comuni (alg)
algFamigliaHashDimensione della firma
HS256HMACSHA-25632 B
HS512HMACSHA-51264 B
RS256RSASSA-PKCS1-v1_5SHA-256256 B (2048-bit key)
ES256ECDSA P-256SHA-25664 B
ES512ECDSA P-521SHA-512132 B
EdDSAEdDSA—64 B (Ed25519)

Come decodificare un JWT

1

Incolla il token

Incolla il token intero, con o senza Bearer iniziale. Ha 3 parti separate da punti, oppure 5 se è un JWE cifrato.

2

Leggi le parti

Header e payload compaiono come JSON formattato, e ogni claim è elencato in una tabella. Gli orari exp, nbf e iat sono mostrati in UTC.

3

Controlla l'orario

La pagina confronta exp e nbf con l'orologio del tuo dispositivo e indica se il token è scaduto. Non dice se il token è autentico.

Com'è fatto un JWT

Un JWT (RFC 7519) si scrive come header.payload.signature. Header e payload sono oggetti JSON, ciascuno codificato in Base64url senza padding (RFC 4648, sezione 5), e la firma è composta da byte grezzi nella stessa codifica. La decodifica cambia solo la codifica, quindi chiunque possieda un token può leggerne il payload: non metterci segreti. L'header indica l'algoritmo di firma in alg, come HS256 (HMAC con SHA-256, firma di 32 byte) o RS256 (RSA con SHA-256, 256 byte per una chiave da 2048 bit).

Questa pagina decodifica un token e nient'altro. Non controlla la firma, perché serve la chiave, e non può dirti se un token sia autentico, revocato o accettato da un server. Confronta i claim exp, nbf e iat, che contano i secondi dal 1970-01-01 UTC, con l'orologio del tuo dispositivo e li mostra come data e ora UTC. Un token con 5 parti è un JWE: il suo contenuto è cifrato, quindi si può mostrare solo l'header.

Domande sul JWT

Come si decodifica un JWT?

Incolla il token nel campo. La pagina lo divide ai punti, converte le prime due parti da Base64url e le mostra come JSON. Un Bearer iniziale viene ignorato. Per il token di esempio l'header è {"alg":"HS256","typ":"JWT"}.

Questa pagina verifica la firma?

No. Per verificare servono il segreto o la chiave pubblica, e questa pagina non ne chiede mai una. Un token che si decodifica qui può comunque essere falsificato, alterato o revocato. Verifica la firma nel codice del tuo server con una libreria JWT mantenuta.

Che cosa significano exp, iat e nbf?

Sono orari in secondi dal 1970-01-01 UTC (RFC 7519). exp è il momento in cui il token scade, nbf è l'orario prima del quale non deve essere accettato e iat è il momento in cui è stato emesso. Nel token di esempio, iat 1700000000 è 2023-11-14 22:13:20 UTC e exp 1700003600 è un'ora dopo.

È sicuro incollare qui un token reale?

Il token resta nella scheda del browser e non viene inviato altrove. Tuttavia un token attivo è una credenziale: chiunque lo possieda può usarlo fino alla scadenza. Incolla token che ti appartengono e, quando puoi, preferisci token scaduti o di prova.

Perché il mio token ha 5 parti?

Un token con 5 parti è un JWE, un JSON Web Token cifrato (RFC 7516). Il suo payload è cifrato per il destinatario, quindi questa pagina mostra solo l'header e le dimensioni delle parti. Il contenuto non si può leggere qui.

Che cosa significano "not Base64url" o "not JSON"?

Ciascuna delle prime due parti deve essere testo Base64url che si decodifica in un oggetto JSON. La pagina indica la parte che non funziona e perché: un carattere fuori dall'alfabeto, byte che non sono UTF-8, oppure JSON con un errore a una certa riga e colonna. La causa più comune è un token troncato o con caratteri in più.