Decodifica un JSON Web Token e vedi header e payload.
Tutti i calcoli sono eseguiti localmente nel tuo browser. Nessun dato viene inviato al server.
I risultati hanno carattere informativo. Verificali con altre fonti.
Leggere un JSON Web Token
Un JWT è formato da tre segmenti Base64url uniti da punti: un'intestazione che dice come è stato firmato, un payload di dichiarazioni e una firma sui primi due. Decodificare mostra che cosa il token afferma, non se sia vero.
Come funziona
- Divide il token sui suoi due punti in intestazione, payload e firma.
- Decodifica i primi due segmenti da Base64url a JSON e li formatta per la lettura.
- Mostra le dichiarazioni temporali standard — exp, iat, nbf — come date, poiché sono salvate come secondi Unix.
- Non tocca la firma: verificarla richiede il segreto o la chiave pubblica dell'emittente, che non va mai incollata in una pagina web.
token = base64url(intestazione) . base64url(payload) . base64url(firma) firma = HMAC oppure RSA/ECDSA sui primi due segmenti exp/iat = secondi dal 1970-01-01T00:00:00Z (non millisecondi)
Esempio pratico
L'intestazione di quasi ogni token HS256 esistente, scomposta a mano.
- JSON dell'intestazione: {"alg":"HS256","typ":"JWT"}
- codifica Base64: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
- nota che il riempimento = finale viene rimosso: JWT lo omette sempre
- un payload {"sub":"1234567890","iat":1516239022}
- 1516239022 secondi → 2018-01-18T01:30:22Z
Il token decodificato dice di essere firmato con HMAC-SHA256, di riguardare il soggetto 1234567890 e di essere stato emesso il 18 gennaio 2018. Se sia autentico è una domanda separata, a cui risponde la firma.
Come leggere il risultato
- Decodificare non è verificare. Un token il cui payload dica admin: true non prova nulla finché la firma non torna con una chiave di cui ti fidi. Non prendere mai una decisione di autorizzazione basandoti sul solo payload decodificato.
- Non incollare token di produzione nei decodificatori online. Questo gira interamente nel tuo browser e non invia nulla, ma non vale per ogni sito del genere, e un token bearer è una password.
- Il payload è solo codificato, non cifrato. Chi possiede il token legge ogni dichiarazione: non metterci mai un segreto.
- Controlla exp rispetto all'ora corrente e rifiuta ciò che è scaduto. Controlla anche iss e aud: una firma valida dall'emittente sbagliato resta il token sbagliato.
- alg: none è un valore reale e un attacco reale. Un verificatore che si fidi della scelta di algoritmo nell'intestazione può ricevere l'istruzione di non verificare affatto.
Domande frequenti
- Questo strumento può dirmi se il mio token è valido?
- No, e nessun decodificatore può farlo senza la tua chiave. Mostra ciò che il token afferma. La validità richiede che la firma torni, che il token non sia scaduto e che emittente e destinatario siano quelli attesi: controlli che spettano al server, tramite una libreria.
- È sicuro incollare qui il mio token?
- Questa pagina decodifica nel browser e non trasmette nulla. Anche così, l'abitudine sicura è usare token di un ambiente di test. Tratta ogni token che dà accesso reale come una password.
- Perché la mia data exp finisce nel 1970?
- Quasi certamente stai passando millisecondi dove la specifica richiede secondi. Date.now() in JavaScript restituisce millisecondi: dividi per 1000 prima di inserire il valore in una dichiarazione.