Decoder JWT: decodifica, verifica e crea JSON Web Token
Incolla un token per vedere header, payload e claim in chiaro, capire se è scaduto e verificare la firma. Token, secret e chiavi non lasciano il tuo dispositivo.
Token, secret e chiavi sono elaborati solo in questa pagina: non vengono inviati, né aggiunti all’URL o agli analytics.
header · payload · firma
Verifica firma
Algoritmo:—È l’unica richiesta di rete della pagina e parte solo quando premi il pulsante.
Controlli
Header
Payload
Claim
L’encoder firma con HMAC (HS256, HS384, HS512). Serve per token di test: non inserire secret di produzione su computer condivisi.
Token firmato
Stai costruendo API con autenticazione a token?
Progettiamo e sviluppiamo API, flussi OAuth 2.0 e OpenID Connect e li testiamo contro le vulnerabilità. Raccontaci il progetto e ricevi una stima.
Grazie! Ti risponderemo entro un giorno lavorativo.
In breve: incolla un JSON Web Token qui sopra. Il decoder mostra header e payload come JSON formattato, spiega i claim standard, dice se il token è scaduto e verifica la firma con il tuo secret o la chiave pubblica. Nella scheda Encoder crei token HS256, HS384 e HS512 per i test. Tutto avviene nel browser.
Abbiamo creato questo decoder JWT per il nostro lavoro su API e autenticazione in YuSMP Group. Se ti serve un team che progetti l’autenticazione a token o ne verifichi la sicurezza: sviluppo di API e penetration test e audit di sicurezza.
Che cos’è un JWT?
Un JSON Web Token (RFC 7519) è una stringa compatta di tre parti in Base64URL separate da punti: header.payload.signature. L’header indica l’algoritmo di firma (alg) e a volte l’ID della chiave (kid). Il payload contiene i claim: chi ha emesso il token, per chi è e quando scade. La firma prova che nessuno ha modificato le prime due parti. Il payload è codificato, non cifrato: chiunque abbia il token può leggerlo.
Come decodificare e verificare un JWT
- Incolla il token nel campo “Token codificato”. Il prefisso
Bearere gli a capo vengono rimossi in automatico. Le tre parti sono colorate: header, payload, firma. - Leggi il risultato. Header e payload appaiono come JSON formattato. Il blocco Claim trasforma
exp,iatenbfin date UTC e nel tuo fuso orario e mostra “scaduto 10 minuti fa” o “scade tra 3 ore”. - Controlla gli avvisi. Lo strumento segnala
alg: none, token scaduti o non ancora validi,expmancante, tempi in millisecondi e campi che sembrano dati personali. - Verifica la firma. Per HS256/384/512 inserisci il secret condiviso come testo o Base64. Per RS, PS, ES ed EdDSA incolla la chiave pubblica in PEM, un certificato X.509, un JWK o un intero JWKS, oppure carica il JWKS da URL: la chiave giusta viene scelta per
kid.
Quali algoritmi sono supportati?
- HMAC — HS256, HS384, HS512: secret condiviso (testo o Base64).
- RSA — RS256, RS384, RS512, PS256, PS384, PS512: chiave pubblica RSA: PEM, PKCS#1, certificato, JWK.
- ECDSA — ES256, ES384, ES512: chiave pubblica EC P-256, P-384 o P-521.
- EdDSA — Ed25519: chiave pubblica Ed25519, se il tuo browser la supporta.
La verifica usa l’API WebCrypto integrata nel browser. L’abbiamo confrontata, per ogni algoritmo, con gli esempi della RFC 7515, con i token di jwt.io e con token firmati dalla libreria Python cryptography.
Errori comuni con i JWT
- Fidarsi del payload senza verificare la firma. Decodificare non è validare: il server deve controllare firma,
exp,isseauda ogni richiesta. - Accettare
alg: noneo lasciare che sia il token a scegliere l’algoritmo. Fissa l’algoritmo atteso sul server. - Un secret HS corto. La RFC 7518 richiede una chiave lunga almeno quanto l’hash: 32 byte per HS256, 64 per HS512. Un secret corto si indovina offline.
- Dati personali nel payload. Email, telefono o indirizzo in un JWT sono leggibili da chiunque veda il token, comprese estensioni del browser e log.
- Millisecondi in
exp. I tempi JWT sono in secondi. Un valore come1735689600000indica l’anno 56.971: il token non scade mai.
Domande frequenti
È sicuro incollare qui un token di produzione?
Il decoder funziona interamente nel browser: token, secret e chiavi non vanno a nessun server, né nell’URL, né negli analytics. Non viene salvato nulla se non spunti “Ricorda”. Tratta comunque i token reali come password e, se puoi, usa token scaduti o di test.
Che differenza c’è tra decodificare e verificare un JWT?
Decodificare legge solo le parti Base64URL e mostra il JSON. Verificare ricalcola la firma con il secret o la chiave pubblica e prova che header e payload non sono stati modificati. Un token può decodificarsi senza problemi e avere comunque una firma non valida.
Perché “Firma non valida” se il token funziona nella mia app?
Spesso il secret è in un’altra codifica: passa da Testo a Base64. Per i token RS ed ES verifica che la chiave pubblica corrisponda al kid dell’header. Il secret deve coincidere byte per byte con quello del server, a capo compresi.
Posso verificare un token con l’URL di un JWKS?
Sì. Incolla l’URL del JWKS (ad esempio /.well-known/jwks.json) e premi “Carica chiavi”. È l’unica richiesta della pagina, e solo tramite quel pulsante. Se il server non consente richieste dal browser (CORS), apri l’URL e incolla il JSON nel campo della chiave.
Posso creare un JWT con questo strumento?
Sì, nella scheda Encoder. Modifica il JSON di header e payload, scegli HS256, HS384 o HS512 e inserisci un secret. I pulsanti impostano iat ad adesso ed exp a un’ora dopo. Il token firmato si copia o si apre nel decoder.
Sono supportati i token cifrati (JWE)?
No. Un JWE ha cinque parti e un payload cifrato, illeggibile senza la chiave privata. Il decoder riconosce questi token e lo segnala.