Decodificatore / verificatore JWT
Decodifica header e payload di un JWT, verifica la firma e scopri quando scade.
Cos’è un JSON Web Token
Un JSON Web Token (JWT) è un modo compatto e autonomo di trasportare un insieme di claim — affermazioni come "questo è l’utente 42" o "questo token scade a mezzogiorno" — in una forma verificabile. I JWT sono ovunque nell’autenticazione moderna: dopo il login, un server spesso consegna al tuo browser un JWT firmato, e ogni richiesta successiva lo include così che il server possa fidarsi di chi sei senza consultare nulla. Poiché il token porta i propri claim e la propria firma, viene descritto come "senza stato" (stateless).
Un JWT è composto da tre parti codificate in Base64URL unite da punti: header.payload.signature. Questo strumento divide e decodifica quelle parti per te, mostra i claim in forma leggibile e, se fornisci la chiave di firma, verifica che la firma sia autentica.
Le tre parti
- Header: descrive come è firmato il token, soprattutto l’algoritmo ("alg", es. HS256 o RS256) e il tipo di token.
- Payload: i claim stessi — un oggetto JSON con campi come sub (soggetto/utente), exp (scadenza), iat (emesso il) e qualsiasi dato personalizzato aggiunto dall’emittente.
- Signature: un valore crittografico calcolato su header e payload con un segreto o una chiave privata. È ciò che rende affidabile un JWT: cambia un singolo carattere del payload e la firma non corrisponde più.
Fondamentale: header e payload sono solo codificati, non crittografati. Chiunque abbia il token può leggerli. La firma non nasconde il contenuto: dimostra che non è stato manomesso. Non mettere mai password o segreti nel payload di un JWT.
Verificare la firma
Decodificare un JWT ti dice cosa afferma; verificarlo ti dice se credere a quelle affermazioni. La verifica ricalcola la firma da header e payload usando una chiave e controlla che corrisponda. Ci sono due famiglie di algoritmi, che usano tipi di chiave diversi:
- HMAC (HS256, HS384, HS512): uno schema simmetrico. Lo stesso segreto condiviso firma e verifica. Fornisci quel segreto per verificare.
- RSA ed ECDSA (RS256, PS256, ES256 e affini): schemi asimmetrici. Una chiave privata firma e una chiave pubblica verifica. Fornisci la chiave pubblica in formato PEM per verificare: non ti serve mai la chiave privata solo per controllare un token.
Questo strumento rileva l’algoritmo dall’header automaticamente e verifica interamente nel tuo browser con la Web Crypto API, così né il token né la chiave vengono mai caricati.
Leggere i claim standard
Alcuni nomi di claim sono standardizzati (si chiamano "registered claims"). Lo strumento li etichetta e converte quelli basati sul tempo da timestamp Unix grezzi alla tua ora locale, con uno stato in linguaggio chiaro così vedi a colpo d’occhio se un token è attivo, scaduto o non ancora valido:
- exp — scadenza: dopo questo momento il token dovrebbe essere rifiutato.
- nbf — not before: il token non è valido fino a questo momento.
- iat — issued at: quando il token è stato creato.
- iss — issuer: chi ha creato il token.
- sub — subject: chi o cosa riguarda il token (spesso un ID utente).
- aud — audience: a chi è destinato il token.
- jti — un identificatore univoco per il token.
Domande frequenti
- Il mio token o la mia chiave vengono inviati da qualche parte?
- No. La decodifica e la verifica della firma vengono eseguite interamente nel tuo browser con la Web Crypto API. Il token, il segreto e la chiave pubblica non lasciano mai il tuo dispositivo, quindi è sicuro ispezionare token di produzione.
- Quali algoritmi di firma può verificare?
- HMAC (HS256, HS384, HS512) con un segreto condiviso, e RSA (varianti RS e PS) ed ECDSA (ES256, ES384) con una chiave pubblica in formato PEM. L’algoritmo viene rilevato automaticamente dall’header del token.
- Un JWT è crittografato?
- No. Un JWT firmato standard è solo codificato, non crittografato: chiunque può leggerne header e payload. La firma dimostra che il token non è stato alterato, ma non ne nasconde il contenuto, quindi non memorizzare mai segreti nel payload.
- Mi serve la chiave privata per verificare un token RS256?
- No. Gli algoritmi asimmetrici verificano con la chiave pubblica. La chiave privata serve solo per creare (firmare) un token, mai per controllarlo.
- Perché il mio token risulta scaduto?
- Il claim exp è nel passato rispetto all’orologio del tuo dispositivo. Lo strumento converte exp, nbf e iat alla tua ora locale e mostra uno stato per confermare a colpo d’occhio la finestra di validità del token.
- Qual è la differenza tra HS256 e RS256?
- HS256 è simmetrico: un unico segreto condiviso firma e verifica, il più semplice quando la stessa parte fa entrambe le cose. RS256 è asimmetrico: una chiave privata firma e una pubblica verifica, il che consente a molte parti di verificare i token senza poterli falsificare.
- Posso modificare il payload e rifirmare il token?
- Questo strumento è di sola lettura: decodifica e verifica, ma non crea né rifirma token. Questo lo mantiene focalizzato ed evita di gestire chiavi di firma private.