PK Systems PK Systems
Encoder e decoder

Decoder JWT

Ispeziona header e payload di un JSON Web Token. La verifica non viene volutamente eseguita — questo serve solo al debug.

Decoder JWT

I token danno accesso — non incollare mai un JWT di produzione in uno strumento di cui non ti fidi. Questa pagina gira interamente nel tuo browser, ma per abitudine, decodifica i token non fidati in locale.

Decodificato

Header


            

Payload


                
            

Firma


                

La firma è mostrata in base64url. Questo strumento non verifica la firma — serve il segreto o la chiave pubblica dell'emittente.

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
issEmittenteIdentifica l'entità che ha emesso il token (es. l'URL di un auth server).
subSoggettoIdentifica il principal a cui il token si riferisce — di solito l'ID utente.
audAudienceI destinatari per cui il token è stato pensato. I riceventi devono rifiutare i token non indirizzati a loro.
expTempo di scadenzaTimestamp Unix oltre il quale il token non va accettato.
nbfNon prima diTimestamp Unix prima del quale il token non va accettato.
iatEmesso ilTimestamp Unix in cui il token è stato emesso.
jtiID JWTIdentificatore univoco del token, utile per le liste di revoca.

Domande frequenti

Il mio JWT viene inviato da qualche parte?
No. La decodifica avviene interamente nel tuo browser — il token non lascia mai il dispositivo. Puoi confermarlo aprendo DevTools > Network e incollando un token; non parte alcuna richiesta. Detto questo, tratta ogni JWT di produzione come una credenziale: incolla solo token che sei tranquillo di vedere nello storico del browser.
Perché questo strumento non verifica la firma?
La verifica richiede il segreto dell'emittente (per HS256) o la chiave pubblica (per RS256, ES256, ecc.). Chiedere agli utenti di incollare segreti di produzione in una pagina web è una ricetta per il disastro, quindi questo strumento volutamente non offre questa opzione. Usa la libreria JWT della tua applicazione o una CLI come jwt per verificare le firme in un ambiente controllato.
Mi dice "Non è un JWT" — cosa c'è di sbagliato?
Un JWT valido ha esattamente tre segmenti separati da punti. Cause comuni dell'errore: spazi extra o un prefisso 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?
Il base64 standard usa +, / 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?
Significa che il JWT non è firmato — chiunque può creare un token con qualsiasi payload. 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.
È sicuro condividere un JWT per debug?
In generale no. I JWT sono bearer token — il possesso del token concede i diritti che rappresenta finché non scade (o non viene revocato, se l'emittente mantiene una lista di revoca). Condividi screenshot del payload decodificato invece del token grezzo, oppure chiedi all'emittente di emettere un token di debug a vita breve con scope limitato. Non incollare mai token di produzione in chat, email o strumenti di terze parti.