Come decodificare e ispezionare token JWT

· 4 min di lettura

I token JSON Web Token (JWT) sono il modo più comune di gestire l'autenticazione nelle applicazioni web moderne. Quando qualcosa non va lato auth — un utente è disconnesso senza ragione, i permessi sono sbagliati, o un'API restituisce 401 — decodificare il JWT è spesso il primo passo di debug.

Cosa contiene un JWT

Un JWT ha tre parti separate da punti:

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U

Intestazione — contiene l'algoritmo (HS256, RS256, ecc.) e il tipo di token.

{"alg": "HS256", "typ": "JWT"}

Payload — contiene claim (asserzioni) sull'utente e sul token.

{"sub": "1234567890", "name": "Alice", "exp": 1700000000}

Firma — un'impronta crittografica che garantisce che il token non sia stato alterato. Non puoi leggerla senza la chiave di firma.

Claim JWT comuni

Claim Nome completo Contenuto
sub Subject ID o identificatore utente
exp Expiration Timestamp Unix di fine validità
iat Issued At Timestamp Unix di creazione
iss Issuer Chi ha creato il token (il tuo server di auth)
aud Audience A chi è destinato il token
nbf Not Before Il token non è valido prima di questa data
jti JWT ID Identificatore unico del token

Come decodificare un JWT

  1. Incolla il tuo token — inserisci il JWT completo (formato intestazione.payload.firma) nel decoder.
  2. Consulta le sezioni decodificate — lo strumento mostra l'intestazione (algoritmo), il payload (claim) e la firma sotto forma di JSON formattato.
  3. Verifica i claim — esamina la data di scadenza, l'emittente, il soggetto e qualsiasi claim personalizzato.

Eseguire il debug con i JWT

Token scaduto? Verifica il claim exp. Converti il timestamp Unix in data leggibile. Se è passata, il token è scaduto e deve essere aggiornato.

Permessi sbagliati? Cerca claim di ruolo o di scope nel payload. Variano a seconda delle implementazioni ma spesso assomigliano a "role": "admin" o "scope": "read write".

Problema di identità utente? Il claim sub identifica l'utente. Verifica che corrisponda all'ID atteso.

Token rifiutato? Verifica il claim aud (audience). Se l'API si aspetta un'audience specifica e il token ne ha un'altra, sarà rifiutato.

Note di sicurezza importanti

Domande frequenti

Posso verificare una firma JWT con un decoder?

No. La verifica della firma richiede il segreto di firma o la chiave pubblica, conservati sul tuo server. Un decoder ti mostra cosa c'è nel token, ma la verifica crittografica deve avvenire sul tuo backend. Non fidarti mai di un JWT non verificato in produzione.

È sicuro incollare un JWT in uno strumento online?

Sì, quando lo strumento gira nel tuo browser. I decoder nel browser elaborano il token localmente — niente viene inviato a un server. Evita gli strumenti che fanno richieste di rete con il tuo token.

Cos'è il claim exp?

Il claim exp (expiration) è un timestamp Unix che indica quando il token scade. Dopo questa data, il token deve essere rifiutato. Verifica sempre questo claim per fare il debug di problemi di autenticazione.

I JWT possono essere cifrati?

I JWT standard (JWS) sono firmati ma non cifrati — chiunque può decodificare il payload. I token JWE (JSON Web Encryption) sono cifrati, ma meno comuni. Non mettere mai dati sensibili (password, segreti) in un payload JWT standard.