Menu

Decoder JWT

Analizza e verifica i JSON Web Token parte per parte.

Di Nethanel Bar, Co-founder & CEO

Ultimo aggiornamento

Vuoi imparare a programmare sul serio?

Coddy ti insegna facendoti scrivere codice vero nel browser: lezioni interattive, feedback immediato e aiuto dall'AI quando ti blocchi.

Cos'è un JWT decoder?

Un JWT decoder divide un JSON Web Token nelle sue tre parti, header, payload e firma, e decodifica in Base64URL le prime due così puoi leggerle come JSON. Gli sviluppatori lo usano di continuo per fare debug di flussi di login, autorizzazioni, claim di sessione e problemi di scadenza dei token.

Decodificare un JWT *non* significa potersene fidare. Header e payload sono leggibili per progettazione: sono solo codificati in Base64URL, non cifrati. È la verifica a controllare se il token è stato firmato da chi ti aspetti e non è stato manomesso.

Un JWT ha la forma header.payload.signature. Ogni parte è codificata in Base64URL e separata da punti. L'header dice quale algoritmo di firma viene usato, il payload contiene i claim (chi è l'utente, quando scade il token, cosa può fare) e la firma permette al server di dimostrare che il token non è stato modificato.

Cosa imparerai decodificando i JWT

  • Un JWT ha tre parti codificate in Base64URL separate da punti: header.payload.signature.
  • I claim comuni come sub, role, iat, nbf ed exp descrivono identità, permessi, data di emissione e data di scadenza.
  • Un payload decodificato può essere modificato da chiunque: solo la firma permette a un server di rilevare la manomissione.
  • Gli algoritmi sono diversi: HS256 usa un segreto condiviso; RS256 ed ES256 usano coppie di chiavi pubblica/privata. Il campo alg dell'header ti dice quale è stato usato.

Come decodificare un JWT passo dopo passo

  1. Incolla il token completo

    Incolla il JWT nella casella di input. Dovrebbe avere la forma xxxx.yyyy.zzzz: tre parti codificate in Base64URL unite da punti.

  2. Leggi l'header

    L'header indica l'algoritmo di firma (alg) e il tipo di token. Attenzione a "alg": "none": significa che il token non è firmato e non ci si può fidare.

  3. Leggi i claim del payload

    Il payload è il JSON con tutti i claim. Cerca sub (id utente), exp (scadenza), iat (emesso il) e gli eventuali claim personalizzati che la tua app aggiunge, come role o tenant.

  4. Controlla la scadenza

    Converti il timestamp Unix di exp in una data: se è nel passato, il token è scaduto e qualsiasi API fatta bene lo rifiuterà.

  5. Verifica la firma (facoltativo)

    Se hai il segreto o la chiave pubblica, incollali nel verificatore per confermare che la firma sia valida. Il contenuto del token è affidabile solo se la firma è corretta.

Claim JWT standard

Questi sono i claim registrati definiti dalla specifica JWT (RFC 7519). Qualsiasi applicazione può aggiungere i propri claim personalizzati accanto a questi.

ClaimNomeSignificato
issIssuer (emittente)Chi ha creato e firmato il token
subSubject (soggetto)A chi si riferisce il token, di solito un id utente
audAudience (destinatario)A chi è destinato il token
expExpiration (scadenza)Timestamp Unix dopo il quale il token non è più valido
nbfNot Before (non prima di)Il token non deve essere accettato prima di questo momento
iatIssued At (emesso il)Quando è stato creato il token
jtiJWT IDIdentificativo univoco, utile per la revoca
algAlgoritmo (header)Algoritmo di firma: HS256, RS256, ES256, …

Esempi di JWT da provare

Esaminare un JWT tipico

Token

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsInJvbGUiOiJzdHVkZW50IiwiZXhwIjoxNzEwMDAwMDAwfQ.Q3hH8yzqI2OsHJ1Lyj8jJfJPa5ZpIVlh1FhJpJbqMcs

Header
{  "alg": "HS256",  "typ": "JWT"}
Payload
{  "sub": "user_123",  "role": "student",  "exp": 1710000000}

L'header dice HS256 (un algoritmo a segreto condiviso). Il payload identifica l'utente, il suo ruolo e quando scade il token. La firma è la terza parte. (Questo è un token di esempio a scopo dimostrativo: la firma non sarà valida con nessun segreto reale.)

Controllare se un token è scaduto

Claim del payload
{  "exp": 1710000000}

exp è un timestamp Unix in secondi. Convertilo in una data: se è nel passato, il token è scaduto e un backend corretto lo rifiuterà.

Riconoscere il pericoloso algoritmo "none"

Header
{  "alg": "none",  "typ": "JWT"}

Se un server accetta "alg": "none", un attaccante può falsificare qualsiasi payload senza firma. In produzione rifiuta sempre questo header.

Errori comuni con i JWT

  • Mettere password, segreti o dati personali sensibili nel payload. I JWT sono leggibili, non cifrati.
  • Decodificare un token e dare per scontato che sia valido senza controllare la firma.
  • Confondere la leggibilità del Base64URL con la cifratura: i payload JWT sono facili da leggere di proposito.
  • Salvare i JWT in localStorage senza considerare l'impatto di un attacco XSS, e poi dargli scadenze lunghissime.
  • Non validare il claim aud (destinatario): un token emesso per un servizio può essere riutilizzato contro un altro se chi lo riceve non lo controlla.

Domande frequenti sui JWT

Cos'è un JWT?
JWT sta per JSON Web Token. È un formato di token compatto, firmato e sicuro per gli URL, usato per trasportare claim tra due parti, di solito tra un server e un browser per rappresentare un utente che ha fatto l'accesso.
Come si decodifica un JWT?
Incolla il token in un JWT decoder, oppure dividilo sui punti e decodifica in Base64URL ciascuna delle prime due parti. Header e payload tornano come JSON; la terza parte è la firma.
Come controllo se un JWT è scaduto?
Guarda il claim exp nel payload. È un timestamp Unix in secondi. Se l'ora attuale è successiva a exp, il token è scaduto.
Chiunque può decodificare un JWT?
Sì. Header e payload sono codificati in Base64URL, non cifrati. La firma dimostra solo che il token non è stato manomesso: non nasconde il contenuto.
Cosa significa verificare un JWT?
La verifica ricalcola la firma usando il segreto o la chiave pubblica previsti e la confronta con la firma del token. Se corrispondono, il payload è affidabile e non modificato.
Devo salvare le password in un JWT?
No. Chiunque abbia il token può leggere il payload. Salva solo identificativi e claim non sensibili, e per la sicurezza affidati a scadenze brevi e refresh token.

Scopri di più

Altri strumenti per sviluppatori

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA