Decoder JWT
Decodifica header e payload di un JWT, leggi exp, iat e nbf come date e verifica firme HS256, RS256, PS256, ES256 o EdDSA nel tuo browser.
I token sono credenziali. Questo strumento li decodifica e li verifica nel tuo browser e non li invia mai da nessuna parte.
Header
Payload
| Claim | Valore | Data | Stato |
|---|
- Algoritmo (alg)
- —
- Firma (Base64url)
- —
Verifica la firma
HS256/384/512: inserisci il segreto condiviso. RS, PS, ES (256/384/512) ed EdDSA: incolla la chiave pubblica in formato PEM (public key, RSA public key o certificato) o JWK (in un JWK Set la chiave viene scelta tramite kid).
Come decodificare un JWT
- Incolla il token nel campo JSON Web Token. Va bene anche un valore completo
Authorization: Bearer …: il prefissoBearere gli eventuali a capo vengono rimossi. - Il token viene decodificato mentre scrivi (oppure premi Decodifica). Header e Payload compaiono come JSON formattato, ognuno con il proprio pulsante Copia.
- Leggi la tabella Claim temporali:
exp,nbfeiatsono mostrati con il valore grezzo, la data nel tuo fuso orario, un tempo relativo (“tra 3 ore”, “2 giorni fa”) e uno stato come Scaduto o Non ancora valido. - Controlla gli avvisi sopra i risultati, per esempio quando
algvalenoneo quando una data sembra espressa in millisecondi. - Per controllare la firma, inserisci la chiave nella sezione Verifica la firma e premi Verifica firma.
Decodificare non significa verificare
Un JWT è composto da tre parti in Base64url separate da punti: header.payload.signature. Header e payload sono solo codificati, non cifrati: chiunque abbia il token può leggerli, e questo strumento può decodificare qualsiasi token senza chiave. Proprio per questo un payload decodificato non dimostra nulla, perché qualcuno potrebbe averlo modificato. Solo una firma valida prova che il token è stato emesso da chi possiede la chiave e che non è stato alterato da allora. Per questo la riga di stato indica “Decodificato (firma non verificata)” finché non lo verifichi.
Un token con cinque parti è un JWE (JWT cifrato): il suo contenuto non si può leggere senza la chiave di decifratura, e lo strumento te lo segnala.
Verificare la firma
- HS256, HS384, HS512 (HMAC): inserisci il Segreto condiviso. Con Formato del segreto indichi se è testo semplice (UTF-8) o Base64/Base64url, visto che alcuni provider salvano i segreti in Base64. Puoi anche incollare una JWK di tipo
oct. Se il segreto è più corto dell’output dell’hash (32 byte per HS256), lo strumento segnala che è sotto il minimo della RFC 7518. - RS256/384/512, PS256/384/512, ES256/384/512 ed EdDSA: incolla la Chiave pubblica (PEM o JWK). I blocchi PEM accettati sono
PUBLIC KEY,RSA PUBLIC KEYeCERTIFICATE(la chiave viene letta dal certificato X.509). Funziona anche una JWK o un intero JWK Set: viene usata la chiave il cuikidcorrisponde a quello dell’header. Le chiavi private vengono rifiutate, perché per verificare non servono mai. EdDSA supporta Ed25519 nei browser la cui Web Crypto lo implementa.
La verifica usa la Web Crypto API del browser. Il risultato “Firma non valida” significa che la chiave è sbagliata o che il token è stato modificato. Tieni presente che l’algoritmo viene preso dall’header del token: un server reale deve invece fissare l’algoritmo atteso nella propria configurazione, altrimenti un attaccante può sceglierlo a piacere.
Note sulla sicurezza
- I token sono credenziali. Chi possiede un access token valido di solito può agire come il suo proprietario fino alla scadenza. Questo strumento decodifica e verifica tutto nel tuo browser e non invia mai né il token né la chiave. Evita comunque di incollare token di produzione in strumenti che non puoi ispezionare.
alg: nonesignifica che il token non è firmato. Chiunque può falsificarne uno e un server deve rifiutarlo. Lo strumento mostra un avviso e si rifiuta di “verificare” un token del genere.- I controlli sull’orario usano l’orologio del tuo computer senza alcuna tolleranza; i server spesso concedono un minuto o due di sfasamento.
- Le date JWT (NumericDate) sono secondi dal 1° gennaio 1970 UTC. Un valore di 13 cifre è probabilmente in millisecondi, un bug molto comune.
Domande frequenti
Questo strumento può dirmi se un token è valido?
Può dirti se la firma corrisponde a una chiave che fornisci e se exp e nbf sono rispettati in questo momento. Il fatto che il token venga accettato dipende però anche da controlli che conosce solo il server: emittente atteso (iss), destinatario (aud), algoritmo e revoca.
Perché la verifica fallisce anche con il segreto giusto?
Controlla il Formato del segreto: un segreto Base64 inserito come testo produce una chiave diversa. Assicurati anche che non siano stati aggiunti spazi o a capo, perché le chiavi HMAC vengono confrontate byte per byte.
Che differenza c'è tra RS256, PS256 ed ES256?
Sono tutte e tre firme a chiave pubblica con SHA-256. RS256 usa RSA con padding PKCS#1 v1.5, PS256 usa RSA con padding PSS ed ES256 usa ECDSA sulla curva P-256, che produce firme molto più corte.
Dove trovo la chiave pubblica di un provider?
I provider di identità pubblicano un JWKS (JSON Web Key Set), di solito indicato in /.well-known/openid-configuration alla voce jwks_uri. Aprilo tu stesso e incolla qui il JSON: lo strumento sceglie la chiave tramite kid e non scarica mai nulla.
È sicuro incollare qui il mio token?
Il token resta sul tuo dispositivo: decodifica e verifica avvengono in locale e non viene caricato nulla. Per maggiore prudenza, usa un token scaduto o di test quando ti serve solo esaminarne la struttura.
Strumenti correlati
- Generatore HMAC Calcola un HMAC-SHA1, SHA-256, SHA-384 o SHA-512 con chiave testo, hex o Base64, ottieni output hex e Base64 e verifica la firma di un webhook nel browser.
- Codifica e decodifica Base64 Codifica e decodifica Base64 gratis, con pieno supporto UTF-8 e opzione base64url sicura per URL. Funziona tutto nel browser, nulla viene caricato.
- Convertitore di timestamp Unix Converti timestamp Unix in secondi o millisecondi in date leggibili in ora locale, UTC e ISO 8601, e trasforma qualsiasi data in tempo epoch.
- Formattatore e validatore JSON Formattatore e validatore JSON gratuito che formatta, minifica e controlla il JSON nel browser, con gli errori di sintassi indicati per riga e colonna.