Decoder JWT
Ispeziona header e payload di un JSON Web Token. La verifica non viene volutamente eseguita — questo serve solo al debug.
Cos'è un JWT?
Un JSON Web Token (JWT, pronunciato "jot") è un modo compatto e URL-safe di trasportare JSON firmato tra due parti — più comunemente un server di autenticazione e la tua app. Un JWT ha tre parti codificate in base64url unite da punti: header.payload.signature. L'header indica quale algoritmo di firma è stato usato; il payload è un oggetto JSON con le claim (subject, scadenza, dati personalizzati); la firma permette al ricevente di verificare che il token non sia stato manomesso. Lo standard è definito nella RFC 7519.
Come usare questo decoder
Incolla un JWT nell'input qui sopra. Lo strumento divide sui punti, decodifica in base64url i primi due segmenti e fa il pretty-print del JSON risultante in due pannelli — Header e Payload. Il terzo pannello mostra la stringa di firma grezza. Se il payload contiene le claim iat, nbf o exp, lo strumento le mostra anche come timestamp UTC leggibili e ti dice se il token è scaduto. La decodifica è live: appena finisci di digitare, i pannelli si aggiornano.
Decodificato ≠ verificato
Un decoder JWT è un aiuto al debug, non uno strumento di sicurezza. Chiunque può decodificare un JWT — la codifica è reversibile per progettazione. La firma è ciò che rende il token affidabile, e verificare una firma richiede il segreto dell'emittente (HS256) o la chiave pubblica (RS256, ES256). Non fidarti mai del contenuto di un JWT in produzione senza prima verificarne la firma. Usa la libreria JWT che viene con il tuo framework; non scriverla tu.
Claim JWT standard
| Claim | Nome | Significato |
|---|---|---|
iss | Emittente | Identifica l'entità che ha emesso il token (es. l'URL di un auth server). |
sub | Soggetto | Identifica il principal a cui il token si riferisce — di solito l'ID utente. |
aud | Audience | I destinatari per cui il token è stato pensato. I riceventi devono rifiutare i token non indirizzati a loro. |
exp | Tempo di scadenza | Timestamp Unix oltre il quale il token non va accettato. |
nbf | Non prima di | Timestamp Unix prima del quale il token non va accettato. |
iat | Emesso il | Timestamp Unix in cui il token è stato emesso. |
jti | ID JWT | Identificatore univoco del token, utile per le liste di revoca. |
Domande frequenti
Il mio JWT viene inviato da qualche parte?
Perché questo strumento non verifica la firma?
jwt per verificare le firme in un ambiente controllato.Mi dice "Non è un JWT" — cosa c'è di sbagliato?
Bearer orfano copiato da un header HTTP (toglilo), è stato incollato solo il payload (servono anche header e firma), oppure il token è in realtà un JWE (cifrato) che ha cinque segmenti e non è decodificabile senza la chiave privata del destinatario.Perché il payload è in base64url e non in base64 standard?
+, / e padding = — nessuno dei quali è URL-safe. Il base64url sostituisce + con -, / con _ e toglie del tutto il padding. Il risultato si può inserire in un URL o in un header HTTP senza ulteriore escape. Questo decoder converte di nuovo a base64 standard prima di chiamare atob del browser.Cosa significa alg: none?
alg: none esiste nella specifica ma è pericoloso in pratica: una famosa classe di vulnerabilità ha sfruttato librerie che accettavano token alg: none come se fossero firmati. Se lo vedi in un token di produzione, considerala una scoperta seria.