← Tutti gli strumenti

Decoder JWT

Decodifica qualsiasi JSON Web Token nel browser. Leggi header, payload e claim all'istante e localmente. Decodificare non è verificare e nessun dato lascia il tuo dispositivo.
Intestazione
Payload

Cosa fa davvero un decodificatore JWT

Un JSON Web Token (JWT) sembra una lunga stringa opaca di caratteri casuali, ma non è cifrato e non è un codice segreto. È un contenitore compatto e sicuro per URL che trasporta dati strutturati tra due parti. Incolla un token nel decodificatore qui sopra e lo divide separando quella stringa per mostrarti il vero JSON all'interno — i metadati, i claim, a chi è destinato il token e quando scade. Tutto avviene direttamente nel tuo browser. Il token non viene mai caricato, registrato o inviato da nessuna parte, il che conta moltissimo quando l'oggetto che stai ispezionando è una credenziale di sessione attiva.

Un JSON Web Token che si divide in tre segmenti Base64url luminosi: header, payload e firma
Una stringa con punti, tre parti distinte: header, payload e firma.

Tre parti, due punti

Ogni JWT ben formato è composto da tre stringhe codificate in Base64url unite da punti: header.payload.firma. Quel singolo carattere punto è il modo in cui i parser sanno dove finisce una sezione e dove inizia la successiva, ed è per questo che un token con il numero sbagliato di punti viene rifiutato prima che qualsiasi altra cosa venga letta.

L'header è un piccolo oggetto JSON che descrive il token stesso. Contiene quasi sempre typ (il tipo, di solito JWT) e alg — l'algoritmo di firma, come HS256 (HMAC con SHA-256) o RS256 (RSA con SHA-256). L'header indica a un verificatore esattamente come è stata prodotta la firma.

Il payload è la parte che interessa alla maggior parte delle persone. È un altro oggetto JSON che contiene i claim — affermazioni sull'utente e sul token. La specifica suddivide i claim in registrati (nomi standard e riservati), pubblici e privati (nomi personalizzati che inventi per la tua app). Decodificare il payload rivela chi è connesso, quale ruolo ha e quando scade la sua sessione.

La firma è il sigillo crittografico. Viene calcolata sull'header e sul payload codificati usando l'algoritmo dell'header più una chiave segreta o privata. Poiché copre entrambe le altre sezioni, qualsiasi modifica all'header o al payload — anche un singolo carattere — la invalida.

I claim che vedrai più spesso

I claim registrati sono nomi brevi di tre lettere definiti dall'RFC 7519 in modo che sistemi diversi possano interoperare. Un gruppetto appare quasi ovunque:

  • ississuer: chi ha emesso il token (il tuo auth server o identity provider).
  • subsubject: il principale a cui si riferisce il token, tipicamente un ID utente stabile.
  • audaudience: il destinatario per cui è pensato il token. Un'API dovrebbe rifiutare i token il cui audience non è essa stessa.
  • expexpiration time: un timestamp Unix dopo il quale il token non deve essere accettato.
  • iatissued at: il timestamp Unix di quando è stato creato il token.

Potresti anche incontrare nbf (not before) e jti (un ID univoco del token). I timestamp sono secondi dall'epoca del 1970 in UTC, ed è per questo che un decodificatore che li mostra come date leggibili ti risparmia il calcolo mentale di verificare se un token è già scaduto.

Decodificare non significa verificare — è qui che le persone si bruciano

Questa distinzione è la cosa più importante da capire sui JWT. Decodificare significa leggere il contenuto: non richiede alcuna chiave e chiunque abbia il token può farlo, perché Base64url è una codifica, non crittografia. Verificare significa dimostrare che il token è autentico e integro — ricalcolare la firma con la chiave segreta o pubblica corretta e confermare che corrisponde.

Questo strumento decodifica. Ti mostra cosa dice il token, non se il token è affidabile. Un token potrebbe essere contraffatto, scaduto o riprodotto e decodificarsi comunque in JSON dall'aspetto perfettamente pulito. Non prendere mai una decisione di autorizzazione basandosi solo sui claim decodificati. In produzione verifichi la firma lato server, controlli exp e confermi che iss e aud corrispondano a ciò che ti aspetti — usando una libreria consolidata, mai un confronto di stringhe scritto a mano.

Un token luminoso che viene aperto e ispezionato accanto a un sigillo dorato che ne prova l'autenticità
Chiunque può leggere un token. Solo chi possiede la chiave può dimostrare che è genuino.

Il payload non è un vault

Poiché il payload è solo codificato in Base64url, è leggibile da chiunque intercepti il token. Tratta tutto ciò che contiene come pubblico. Non inserire password, numeri completi di carte di credito, chiavi segrete o dati personali sensibili nei claim JWT — se riesci a decodificarlo qui con un clic, altrettanto può fare chiunque altro ottenga una copia. La firma protegge dalla modifica, mai dalla lettura. Se hai davvero bisogno di nascondere il contenuto del payload, quello è un compito per JWE (token cifrati), una specifica completamente diversa.

Privacy e strumenti correlati

Ispezionare un token è un'operazione delicata, quindi questo decodificatore funziona interamente lato client — il parsing è JavaScript puro nella tua scheda e niente lascia il tuo dispositivo. Incollare un token di sessione in uno strumento basato su server significa consegnare una credenziale attiva a una terza parte, il che è esattamente ciò che dovresti evitare. Per la codifica sottostante, consulta il nostro strumento Base64, ed esplora il resto dei nostri strumenti per sviluppatori per altre utilità on-device.

Domande frequenti

Un JWT è cifrato?

No. Un JWT standard è codificato in Base64url, non cifrato. Chiunque abbia il token può leggere l'header e il payload. Usa JWE se hai bisogno che il contenuto sia nascosto.

Questo strumento verifica la firma?

No. Decodifica e mostra solo l'header e il payload. Per verificare la firma sono necessari la chiave segreta o pubblica dell'emittente e l'operazione deve essere eseguita sul tuo server.

È sicuro incollare il mio token qui?

Sì. La decodifica viene eseguita interamente nel tuo browser usando JavaScript locale. Il token non viene mai caricato, memorizzato o inviato ad alcun server.

Cosa significano iss, sub, aud, exp e iat?

Sono claim registrati: issuer, subject, audience, expiration time e issued-at time. I tre relativi al tempo usano timestamp Unix in secondi.

Posso fidarmi dei claim mostrati dopo la decodifica?

Non da soli. I claim decodificati possono provenire da un token contraffatto o scaduto. Verifica sempre la firma e controlla la scadenza lato server prima di fidarti di essi.

Perché il mio token ha tre parti separate da punti?

Sono l'header, il payload e la firma, ciascuno codificato in Base64url e unito da punti. I punti indicano ai parser dove inizia e finisce ogni sezione.