Decodificatore JWT
Incolla un JSON Web Token per vederne header e payload, oltre a sapere se è scaduto.
Questo strumento decodifica soltanto il token — non ne verifica la firma. Non incollare mai un token in uno strumento che chiede anche la sua chiave segreta.
Tre segmenti, un limite dichiarato onestamente
Un JWT è base64url(header).base64url(payload).firma.
Questo strumento divide il tuo input in base ai punti, converte
ciascuno dei primi due segmenti da base64url a base64 standard
(sostituendo -/_ di nuovo con +// e ripristinando il padding che
atob() si aspetta), lo decodifica in testo UTF-8 e lo interpreta
come JSON. Il terzo segmento — la firma — viene mostrato esattamente
com'è scritto, perché verificarlo richiederebbe la chiave
segreta o pubblica dell'emittente, che non ha alcun motivo di
essere digitata in un sito web.
Esempio pratico
Token:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Si decodifica nell'header:
{
"alg": "HS256",
"typ": "JWT"
} e nel payload:
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
Questo token in particolare non ha un claim exp,
quindi non c'è nulla da far scadere — incolla un token che ne ha
uno e il badge sopra i campi ti dice a colpo d'occhio se è
ancora valido.
Domande frequenti
Questo strumento verifica che il token sia autentico?
No — e nessuno strumento lato browser può farlo onestamente. Verificare la firma di un JWT richiede la chiave segreta (per HS256) o la chiave pubblica (per RS256/ES256) che lo ha emesso, e quella chiave deve stare sul tuo server, mai incollata in un sito web. Questo strumento si limita a decodificare header e payload per farteli leggere — non controlla mai se la firma è valida. Considera un token decodificato "leggibile", non "attendibile": chiunque può decodificare un JWT, e chiunque può falsificarne uno senza la chiave di firma, quindi l'autenticità va sempre verificata lato server.
Quali sono le tre parti di un JWT?
Un JWT è composto da tre segmenti codificati in base64url uniti da punti: header.payload.firma. L'header indica l'algoritmo di firma e il tipo di token (tipicamente {"alg":"HS256","typ":"JWT"}). Il payload contiene i claim — i dati veri e propri, come un ID utente, un emittente e una scadenza. La firma viene calcolata dal server emittente su header e payload usando un segreto noto solo a lui, così un server ricevente può confermare che il token non è stato alterato — ma solo se possiede anch'esso quel segreto.
Perché base64url è diverso dal base64 normale?
Il base64 normale usa +, / e = come parte del proprio alfabeto, e tutti e tre hanno un significato speciale in un URL (+ può indicare uno spazio, / separa i segmenti del percorso, = apre una query string). base64url sostituisce + con -, / con _, ed elimina del tutto il padding con =, così un token può stare in sicurezza dentro un URL o un'intestazione HTTP senza bisogno di codifica percentuale. Questo strumento riconverte il base64url in base64 standard prima di decodificare, perché è il formato che si aspetta la funzione atob() del browser.
Il mio token viene caricato da qualche parte?
No. La suddivisione della stringa e la sua decodifica avvengono interamente nel tuo browser con semplice JavaScript — nulla viene inviato, registrato o salvato su un server. Detto questo, i JWT spesso contengono dati di sessione reali: non incollare un token di produzione attivo in nessuno strumento, incluso questo, se non sei sicuro di chi altro potrebbe vedere il tuo schermo.