tigtools

Decodificatore JWT

Incolla un JWT per leggere l'header e le claim e vedere quando scade. La decodifica avviene nel browser e non verifica la firma.

Funziona nel browser Nessuna registrazione

Decodificare non significa verificare: chiunque può creare un token con qualsiasi contenuto. Questo strumento non verifica la firma. L'elaborazione avviene solo nel browser, ma è comunque consigliabile non incollare token di produzione attivi in nessun sito web.

Come si usa

  1. Copia un token da un header Authorization, da un cookie o dagli strumenti per sviluppatori del browser. L'eventuale prefisso “Bearer ” viene rimosso automaticamente.
  2. Incollalo nel campo. L'header e il payload vengono visualizzati come JSON formattato.
  3. Controlla la riga di stato e la tabella delle claim per vedere issuer, audience e date di scadenza nel tuo fuso orario.
  4. Copia il JSON dell'header o del payload per usarlo altrove.

Come funziona

Un JSON Web Token (JWT, RFC 7519) nella sua forma firmata più comune (JWS) è composto da tre parti codificate in base64url e separate da punti. L’intestazione indica quale algoritmo ha firmato il token, ad esempio HS256 (HMAC con SHA-256) o RS256 (RSA). Il payload contiene le attestazioni: dichiarazioni sull’utente e sul token stesso. La firma consente al server di verificare che l’intestazione e il payload non siano stati modificati.

L’intestazione e il payload sono solo codificati, non cifrati. Chiunque abbia un token può leggerne il contenuto: è proprio ciò che fa questo strumento. Non inserire segreti nei payload JWT.

La decodifica non dimostra nulla sul token. Senza la chiave dell’emittente, nessuno può sapere se la firma è autentica; quindi il risultato qui non deve mai essere usato per decidere se fidarsi di un token. La verifica va eseguita sul server, con una libreria JWT aggiornata che controlli la firma, l’algoritmo, exp, nbf, iss e aud.

Le attestazioni registrate sono descritte nella tabella. exp, nbf e iat sono valori NumericDate: secondi trascorsi dal 1º gennaio 1970 UTC. Lo strumento li converte in date nel tuo fuso orario e li confronta con l’orologio del dispositivo, senza la breve tolleranza che i server spesso consentono per compensare le differenze degli orologi. Se l’orologio è sbagliato, anche lo stato sarà errato.

I token con cinque parti sono JWT cifrati (JWE). Il loro payload non può essere decodificato senza la chiave, quindi lo strumento si limita a indicarne il formato.

Esempi

Perché la mia API restituisce 401?

Decodifica il token di accesso che invia la tua app. Se la riga di stato dice “Scaduto il …”, il client deve aggiornare il token. Se aud mostra https://api.example.com ma stai chiamando https://api2.example.com, il pubblico non corrisponde.

Verificare un token ID OpenID Connect

Un token ID di un provider di accesso contiene iss (il provider), sub (l’ID utente stabile), aud (l’ID client), iat e exp, oltre ad attestazioni del profilo come email e name. Decodificarlo mostra quali attestazioni riceve effettivamente la tua app.

Leggere un’attestazione con timestamp

Un payload contiene "exp": 1735689600. La tabella delle attestazioni lo mostra come 1º gennaio 2025, 00:00:00 UTC, convertito nell’ora locale, insieme al tempo trascorso dalla scadenza o a quello che manca.

Domande frequenti

Questo strumento verifica la firma JWT?

No. Decodifica solo l’intestazione e il payload. Per verificare il token serve il segreto (per HS256) o la chiave pubblica dell’emittente (per RS256 e ES256); la verifica va eseguita sul server con una libreria affidabile.

È sicuro incollare qui il mio token?

Il token viene decodificato nel browser e non viene inviato altrove. Tuttavia, un token valido funziona come una password fino alla scadenza: è quindi preferibile usare token scaduti o di test e non incollare mai token di produzione in strumenti di cui non ti fidi.

Perché chiunque può leggere il payload?

I JWT firmati sono codificati in base64url, che non è una forma di crittografia. La firma protegge il token dalle modifiche, non dalla lettura. Se i contenuti devono restare segreti, usa un JWT crittografato (JWE) oppure conserva i dati sul server.

Che cosa significa “exp” e in quale unità è espresso?

exp indica la scadenza come NumericDate: il numero di secondi interi (non millisecondi) trascorsi dal 1970-01-01 00:00:00 UTC. Il token deve essere rifiutato da quel momento in poi.

Perché compare l'errore “base64url non valido”?

Probabilmente il token è stato troncato o modificato durante la copia, ad esempio perché ne sono stati persi gli ultimi caratteri, perché è stato racchiuso tra virgolette o perché è stato codificato nell'URL (%2E al posto di un punto). Incolla il token originale esattamente come è stato generato.

Privacy

Il token viene decodificato con JavaScript nel browser. Non viene inviato ad alcun server, salvato né incluso nelle statistiche. Non vengono verificati la firma né cercate chiavi, quindi non viene effettuata alcuna richiesta di rete.