Blog News Contatti Richiedi una proposta

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.

Funziona nel browser: token e chiavi non lasciano il tuo dispositivoGratisSenza registrazione

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: —

Controlli

    Header

    Payload

    Claim

    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.

    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

    1. Incolla il token nel campo “Token codificato”. Il prefisso Bearer e gli a capo vengono rimossi in automatico. Le tre parti sono colorate: header, payload, firma.
    2. Leggi il risultato. Header e payload appaiono come JSON formattato. Il blocco Claim trasforma exp, iat e nbf in date UTC e nel tuo fuso orario e mostra “scaduto 10 minuti fa” o “scade tra 3 ore”.
    3. Controlla gli avvisi. Lo strumento segnala alg: none, token scaduti o non ancora validi, exp mancante, tempi in millisecondi e campi che sembrano dati personali.
    4. 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, iss e aud a ogni richiesta.
    • Accettare alg: none o 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 come 1735689600000 indica 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.

    Strumenti simili