DevBox Strumenti veloci per sviluppatori, senza registrazione

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.

Inserisci questo strumento nel tuo sito

Uso libero, senza altra attribuzione oltre al link già presente nel widget. Gira interamente nel browser di chi visita, quindi non aggiunge carico al tuo server.

Anteprima del widget