Nessun upload, 100% locale, nessun account

Tutorial

Come decodificare un JWT senza esporlo

Un token JWT trasporta dati reali: l'utente per cui è stato emesso, i permessi che concede, la sua data di scadenza. Incollarlo in un decodificatore online qualsiasi significa affidare quei dati, e spesso una sessione ancora valida, a un server che non controlli. Il decodificatore qui sotto gira interamente nel tuo browser: puoi leggere cosa contiene un token, controllare se è scaduto e confermare una firma HMAC quando conosci il segreto, il tutto senza che una sola richiesta di rete lasci la tua scheda.

Passo dopo passo

  1. Apri il decodificatore di JWT e incolla il token nella casella di input. Un JWT è formato da tre blocchi in Base64Url uniti da punti: intestazione, payload e firma. Puoi incollarlo con il prefisso Bearer o senza; lo strumento legge la struttura in entrambi i casi e ti segnala subito se il formato è errato.
  2. Leggi l'intestazione e il payload decodificati. L'intestazione mostra l'algoritmo di firma (ad esempio HS256 o RS256) e l'identificatore della chiave quando è presente. Il payload elenca i claim: per chi è stato emesso il token (sub), chi lo ha emesso (iss) e i timestamp. Lo strumento converte i campi numerici iat, nbf ed exp in date leggibili e segnala se il token è ancora valido o già scaduto.
    Un JWT decodificato che mostra l'algoritmo dell'intestazione e i claim del payload con date di emissione e scadenza leggibili
  3. Se il token usa HS256 e possiedi il segreto condiviso, incolla il segreto nel campo di verifica e fai clic su Verifica. Lo strumento ricalcola l'HMAC su intestazione e payload e lo confronta con la firma, così scopri se il token è autentico o è stato manomesso. Per i token RS256 o ES256 la firma si basa su una chiave privata che non hai; perciò lo strumento ispeziona i claim ma non pretende di verificare la firma.
    Il campo di verifica HMAC compilato con il segreto condiviso e un badge di firma valida per un token HS256

Perché non incollare mai un token su un sito qualunque

Un JWT non è cifrato. Intestazione e payload sono solo codificati in Base64Url, il che significa che chiunque riceva il token può leggere ogni claim al suo interno: e-mail, identificatore utente, ruoli, flag interni. Se il token è un token di accesso non ancora scaduto, chi lo possiede può riutilizzarlo e agire al posto tuo finché non scade. Incollando un token attivo in un decodificatore ospitato, invii tutto questo ai log di quel server. Decodificare il token sulla tua macchina, senza alcun caricamento, è l'unico modo di ispezionarlo senza allargare la cerchia di chi può vederlo. Puoi confermare l'assenza di traffico aprendo il pannello di rete durante la decodifica.

Cosa può e cosa non può dirti la firma

La firma è ciò che impedisce a qualcuno di modificare i claim e farla franca. Per un token HS256 lo stesso segreto firma e verifica, quindi se conosci il segreto puoi confermare pienamente l'autenticità del token proprio qui. Per i token RS256 ed ES256 una chiave privata firma il token e solo la chiave pubblica corrispondente lo verifica; la chiave privata non lascia mai l'emittente, perciò uno strumento lato client può leggere i claim ma non può dimostrare onestamente la firma senza quella chiave pubblica. Considera il payload decodificato come un'affermazione fatta dall'emittente, non come una prova, finché la firma non viene controllata da chi possiede la chiave di verifica. Per generare hash o confrontare segreti separatamente, anche il generatore di hash di questo sito funziona in locale.

Struttura JWT e cosa rivela ciascuna parte

Un JWT è composto da tre segmenti codificati in Base64url separati da punti: header, payload e firma. L'header dichiara il tipo di token ("JWT") e l'algoritmo: HS256 (HMAC-SHA-256, un segreto condiviso) o RS256 (RSA-SHA-256, una coppia di chiavi pubblica/privata) sono i più comuni. Il payload contiene claim come `sub` (soggetto, di solito un ID utente), `iat` (timestamp Unix di emissione), `exp` (timestamp Unix di scadenza), `aud` (pubblico previsto) e claim applicativi personalizzati come ruoli o ambiti. Base64url non è cifratura: è una variante di Base64 sicura per gli URL che sostituisce `+` con `-` e `/` con `_`, e omette il padding. Chiunque detenga la stringa del token grezzo può decodificare l'header e il payload senza la chiave di firma. Solo il segmento della firma richiede la chiave per essere verificato. Ecco perché incollare un token di produzione attivo in un decodificatore online esterno è un rischio di sicurezza: se il `exp` del token è ancora nel futuro e il servizio registra l'input, la sessione che rappresenta potrebbe essere compromessa.

Gli strumenti usati in questa guida

Domande frequenti

Il mio token viene inviato a un server quando lo decodifico?

No. Il decodificatore divide il token, decodifica intestazione e payload in Base64Url e li mostra in memoria. Il controllo HMAC facoltativo usa l'API Web Crypto integrata nel tuo browser. Niente transita sulla rete, e questo conta perché un JWT contiene spesso dati personali e una sessione ancora attiva. Apri il pannello di rete del browser durante la decodifica e non vedrai partire alcuna richiesta.

Questo strumento può verificare una firma RS256 o ES256?

Non del tutto, e non fingerà di farlo. HS256 usa un unico segreto condiviso per firmare e verificare, quindi incollare quel segreto consente allo strumento di confermare la firma nel browser. RS256 ed ES256 usano una chiave privata per firmare e una chiave pubblica distinta per verificare; lo strumento legge e convalida i claim e la scadenza, ma si ferma prima di affermare una firma che non può controllare. Per quei token, verifica sul servizio che possiede la chiave pubblica.

Fonti