Decodificatore JWT

Decodifica intestazione e payload JWT localmente. La firma non viene verificata.

Il modulo interattivo è disponibile quando JavaScript è attivo.

Come si usa

Un JSON Web Token (JWT, RFC 7519) è di solito composto da tre parti separate da punti: un header, un payload e una firma. Le prime due sono JSON codificato in Base64URL, una variante di Base64 sicura negli URL che nei JWT si scrive senza il padding =. Incolla un token e «Decodifica» mostra header e payload come JSON con rientri. La firma non viene decodificata: si tratta di dati binari, non JSON.

L’header indica l’algoritmo (alg): HS256 usa un segreto condiviso (un HMAC), mentre RS256 e ES256 sono firme create con una chiave privata e verificate con la chiave pubblica corrispondente. Il payload contiene i claim: quelli standard includono iss (emittente), sub (soggetto), aud (destinatario), exp (scadenza), nbf (non valido prima di), iat (data di emissione) e jti (ID del token).

exp, nbf e iat sono timestamp Unix in secondi. Questo strumento li mostra come numeri; per leggerne uno come data, incollalo nel «Convertitore timestamp Unix».

Decodificare non significa verificare. Chiunque può creare un token con qualsiasi payload, quindi un token decodificato non prova nulla finché l’applicazione che lo riceve non ne ha verificato la firma con la chiave giusta e non ha controllato exp e nbf, accettando solo gli algoritmi che si aspetta. Un token con alg impostato su none non ha alcuna firma e va rifiutato, a meno che non sia esplicitamente voluto.

Base64URL è una codifica, non una cifratura: chiunque abbia un token può leggerne il payload, ed è per questo che password e altri segreti non vanno inseriti al suo interno. I token cifrati (JWE) hanno cinque parti e non si possono leggere senza la chiave, quindi questo strumento li rifiuta. La decodifica avviene nel tuo browser; il token non viene inviato da nessuna parte.

Esempio

Decodifica un token dimostrativo. Leggere intestazione e contenuto non verifica una firma né prova l’autenticità.

  • eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMifQ.signatureHeader {"alg": "HS256", "typ": "JWT"} e payload {"sub": "123"}.
  • eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiQW5hIiwiaWF0IjoxNzA0MDY3MjAwLCJleHAiOjE3MDQwNzA4MDB9.signaturePayload con iat 1704067200 ed exp 1704070800: emesso alla mezzanotte UTC del 1° gennaio 2024 e valido per un’ora.
  • eyJhbGciOiJub25lIn0.eyJzdWIiOiIxMjMifQ.Header {"alg": "none"} e firma vuota: un token non firmato, che normalmente un server dovrebbe rifiutare.

Domande frequenti

È sicuro incollare un token di produzione?

L’elaborazione è locale, ma i token possono contenere dati sensibili. Preferisci un token oscurato o scaduto e non condividere mai un segreto di firma.

Questo strumento può dirmi se un token è valido?

No. Non controlla la firma, la scadenza né l’emittente. Per verificare un token servono il segreto condiviso (HS256) o la chiave pubblica dell’emittente (RS256, ES256), e la verifica spetta all’applicazione che lo accetta.

Perché il payload è leggibile se il token è firmato?

Una firma protegge dalle modifiche, non dalla lettura. Il payload è solo codificato in Base64URL, quindi è leggibile da chiunque veda il token.

Perché ricevo un errore?

Il testo non è un token le cui prime due parti si decodificano in JSON. Controlla di aver copiato il token per intero, senza la parola Bearer né virgolette intorno, e che non sia un JWE cifrato.

Strumenti correlati