Decoder JWT

Decodifica e ispeziona i JSON Web Token

Prova un esempio

Token JWT

Esegue in locale · Sicuro per incollare segreti
Prova anche:Codificatore JWT

Cos'è un JWT (JSON Web Token)?

Un JSON Web Token (JWT) è un formato di token compatto e sicuro per URL, definito nella RFC 7519. Codifica un insieme di claim come oggetto JSON, quindi lo firma — e facoltativamente lo cifra — in modo che il destinatario possa verificare che i dati non siano stati manomessi. I JWT sono lo standard de facto per l'autenticazione senza stato nelle REST API, nei sistemi di single sign-on e nell'autorizzazione dei microservizi.

Anatomia del JWT: Header · Payload · Firma

Ogni JWT è composto da tre segmenti codificati in base64url separati da punti. L'header e il payload sono JSON semplice — leggibili da chiunque — mentre la firma è un valore crittografico che può essere verificato solo con la chiave corretta.

Token codificato

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIiwibmFtZSI6IkFsaWNlIiwicm9sZSI6ImFkbWluIiwiaWF0IjoxNzE3MjAwMDAwLCJleHAiOjE3MTcyMDM2MDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

HeaderPayloadFirma
Header
json
{
  "alg": "HS256",
  "typ": "JWT"
}
Payload
json
{
  "sub":  "user123",
  "name": "Alice",
  "role": "admin",
  "iat":  1717200000,
  "exp":  1717203600
}

Perché usare un decoder JWT?

I JWT grezzi sembrano testo casuale. Questo strumento visualizza istantaneamente l'header e il payload come JSON formattato, così puoi esaminare i claim, verificare i tempi di scadenza e controllare le scelte degli algoritmi senza scrivere una sola riga di codice.

🔍
Ispezione immediata dei claim
Visualizza ogni claim nel payload — sub, iss, aud, exp, ruoli personalizzati, permessi — formattato e leggibile con un solo clic.
🔓
Nessuna chiave segreta necessaria
L'header e il payload sono pubblici; solo la firma richiede il segreto. Questo strumento decodifica entrambi senza la tua chiave di firma.
⏱️
Analisi di scadenza e timestamp
I timestamp Unix (exp, iat, nbf) vengono convertiti automaticamente in date leggibili per verificare immediatamente se un token è scaduto.
🔒
Funziona interamente nel browser
Tutto viene elaborato localmente — nessun dato del token viene inviato a server. Sicuro da usare con token di produzione durante il debug.

Riferimento ai claim JWT standard

La RFC 7519 definisce sette nomi di claim registrati. Non sono obbligatori, ma il loro utilizzo è fortemente raccomandato per l'interoperabilità. Puoi aggiungere qualsiasi claim personalizzato al payload.

ClaimDescrizioneTipo
issEmittenteIdentifica chi ha emesso il token — es. l'URL del server di autenticazione o il nome dell'applicazione.string
subSoggettoIdentifica il principale a cui si riferisce il JWT — tipicamente un ID utente o un account di servizio.string
audAudienceIdentifica i destinatari previsti. La parte ricevente deve verificare che corrisponda al proprio identificatore.string | string[]
expTempo di scadenzaTimestamp Unix dopo il quale il token non deve essere accettato. Impostalo sempre per limitare i danni da un token rubato.number
nbfNon prima diTimestamp Unix prima del quale il token non deve essere accettato. Utile per pianificare token con data futura.number
iatEmesso ilTimestamp Unix in cui il token è stato emesso. Usato per calcolare l'età del token.number
jtiJWT IDUn identificatore univoco per il token. Consente la revoca memorizzando e verificando i valori JTI utilizzati lato server.string

Algoritmi di firma JWT

Il claim di header alg dichiara quale algoritmo ha firmato il token. La scelta influisce sulla sicurezza, sulle prestazioni e sulla capacità dei servizi di terze parti di verificare i token senza la chiave privata.

AlgoritmoFamigliaTipo di chiaveNote
HS256HMACSymmetricIl più comune. Segreto condiviso — chiunque abbia il segreto può firmare e verificare.
HS384HMACSymmetricVariante HMAC più robusta; costo di prestazioni moderato.
HS512HMACSymmetricVariante HMAC più forte.
RS256RSAAsymmetricAlgoritmo asimmetrico più utilizzato (Google, Auth0, Okta). La chiave pubblica verifica senza la chiave privata.
RS384RSAAsymmetricVariante RS con sicurezza maggiore.
RS512RSAAsymmetricVariante RS più forte.
ES256ECDSAAsymmetricCurva ellittica — firme più corte di RSA, popolare su mobile e IoT.
PS256RSA-PSSAsymmetricRSA-PSS: più moderno e sicuro rispetto a RS256 basato su PKCS1v1.5.
noneNessuna firma — criticamente pericoloso. Non accettare mai token con alg: none in produzione.

Considerazioni sulla sicurezza

Decodificare un JWT è sempre sicuro. Fidarsi di un JWT senza una corretta verifica della firma non lo è. Tieni a mente queste regole ogni volta che consumi token nella tua applicazione.

Sempre sicuro
  • Decodificare e ispezionare un JWT negli strumenti per sviluppatori o in questo strumento
  • Usare exp, iat e nbf per comprendere la durata del token
  • Registrare i claim del payload per il debug (omettere PII sensibili)
  • Leggere l'header alg per capire come è stato firmato il token
Non farlo mai
  • Fidarsi dei claim nel payload senza verificare la firma lato server
  • Accettare token con alg: none — significa nessuna firma
  • Memorizzare token di accesso in localStorage in applicazioni ad alta sicurezza (preferire cookie httpOnly)
  • Impostare exp molto nel futuro per token che portano permessi sensibili

Casi d'uso comuni

Debug dei flussi di autenticazione
Incolla un token dalla scheda di rete del browser per esaminare i claim, verificare i ruoli incorporati e controllare la scadenza senza toccare il codice di produzione.
Ispezione di token di terze parti
Leggi rapidamente i token da Google, Auth0, Okta o Azure AD per vedere quali claim il tuo provider include e confrontarli con lo schema atteso.
Sviluppo e test di API
Quando scrivi o testi endpoint API, decodifica l'header di autorizzazione per confermare che la tua logica di generazione dei token imposti i valori corretti per sub, aud e scope.
Autorizzazione nei microservizi
Nelle mesh di servizi, ogni servizio valida il JWT del chiamante a monte. Decodifica i token per tracciare quale servizio ha emesso il token e quali permessi afferma.
Supporto e risposta agli incidenti
Quando un utente segnala un errore di autenticazione, decodifica il suo token per verificare se è scaduto, se l'audience è errata o se manca un claim richiesto.
Audit di sicurezza
Controlla l'utilizzo dei JWT nei servizi verificando le scelte degli algoritmi, le finestre di scadenza e se dati sensibili sono accidentalmente memorizzati nel payload non cifrato.

Decodifica JWT nel codice

L'header e il payload sono codificati in base64url — basta invertire la codifica. Base64url sostituisce + con - e / con _, e omette il padding =. Solo la firma richiede la chiave segreta.

JavaScript (browser)
function decodeJWT(token) {
  const [, payload] = token.split('.')
  const json = atob(payload.replace(/-/g, '+').replace(/_/g, '/'))
  return JSON.parse(json)
}
Node.js
const [, payload] = token.split('.')
const decoded = JSON.parse(
  Buffer.from(payload, 'base64url').toString()
)
Python
import base64, json

def decode_jwt(token):
    payload = token.split('.')[1]
    padding = '=' * (-len(payload) % 4)
    return json.loads(base64.urlsafe_b64decode(payload + padding))
CLI (bash + jq)
TOKEN="eyJhbGc..."
echo $TOKEN | cut -d. -f2 | base64 -d 2>/dev/null | jq .

Domande frequenti

Posso decodificare un JWT senza la chiave segreta?
Sì. L'header e il payload di un JWT sono semplicemente JSON codificato in base64url — non cifrato. Chiunque può decodificarli e leggerli. Il segreto (o la chiave privata per gli algoritmi RS/ES) è necessario solo per verificare la firma, confermando che il token non è stato manomesso.
Decodificare un JWT significa che la firma è stata verificata?
No. Decodificare legge solo i claim. La verifica è un passaggio separato che controlla la firma crittografica usando la chiave corretta. Verifica sempre la firma prima di fidarti di qualsiasi claim nella tua applicazione.
Qual è la differenza tra HS256 e RS256?
HS256 usa un singolo segreto simmetrico condiviso tra emittente e verificatore — chiunque abbia il segreto può creare e verificare token. RS256 usa una coppia di chiavi asimmetriche: la chiave privata firma, la chiave pubblica verifica. Con RS256 puoi distribuire la chiave pubblica in modo che servizi esterni possano verificare i token senza la possibilità di falsificarli.
Perché la decodifica base64 a volte fallisce?
I JWT usano la codifica base64url, che usa - invece di + e _ invece di /, e omette i caratteri di padding =. I decoder base64 standard richiedono + e / e potrebbero richiedere il padding. Aggiungi il padding (multiplo di 4 con =) e scambia i caratteri prima di decodificare manualmente.
È sicuro incollare un JWT di produzione in questo strumento?
Sì — questo strumento funziona interamente nel browser e non invia dati a nessun server. Tuttavia, fai attenzione a chi può vedere lo schermo o la cronologia del browser. Per token molto sensibili, decodificali localmente nel terminale.
Cosa significa alg: none ed è pericoloso?
alg: none significa che il token non ha firma crittografica — chiunque può creare un token con claim arbitrari e impostare alg su none. Alcune librerie JWT precedenti accettavano questi token, creando una vulnerabilità critica. Una libreria JWT sicura rifiuta sempre i token con alg: none a meno che non sia configurato esplicitamente diversamente. Non disabilitare mai questo controllo.