> decodificare | ispezionare | verificare <
// Decodifica e ispeziona i JSON Web Token (JWT) istantaneamente
Elaborazione Locale
Decodifica JWT 100% lato client. I tuoi token non lasciano mai il tuo browser.
Auto-Decodifica
Decodifica automaticamente i token JWT quando incolli o digiti.
Ispezione Completa del Token
Visualizza intestazione, payload e firma. Verifica algoritmo e scadenza.
// SULLA DECODIFICA JWT
Struttura JWT:
Un JSON Web Token (JWT) è composto da tre parti codificate in Base64URL separate da punti: intestazione.payload.firma. L'intestazione specifica l'algoritmo e il tipo di token. Il payload contiene le claim (dati). La firma verifica l'integrità del token.
Esempio:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.signature → {"alg":"HS256"} + {"sub":"1234"}
Casi d'Uso Comuni:
- >Debug dei token di autenticazione nelle applicazioni web
- >Ispezione dei token OAuth 2.0 e OpenID Connect
- >Verifica della scadenza e delle claim dei token
- >Comprensione della struttura JWT secondo RFC 7519
- >Verifica dell'integrità della codifica Base64URL
>> domande frequenti
D: Cos'è un JSON Web Token (JWT)?
R: JWT (JSON Web Token) è uno standard aperto (RFC 7519) per la trasmissione sicura di informazioni tra parti come oggetto JSON. È compatto, sicuro per gli URL e comunemente usato per l'autenticazione.
D: Quali sono le tre parti di un JWT?
R: Un JWT è composto da tre parti separate da punti: l'Intestazione (algoritmo e tipo), il Payload (claim e dati) e la Firma (hash di verifica). Ogni parte è codificata in Base64URL.
D: Un JWT può essere decodificato senza la chiave segreta?
R: Sì, l'intestazione e il payload di un JWT possono essere decodificati da chiunque poiché sono semplicemente codificati in Base64URL (non crittografati). La chiave segreta è necessaria solo per verificare la firma.
D: Qual è la differenza tra JWT e autenticazione basata su sessione?
R: Le sessioni memorizzano lo stato sul server con un cookie di ID sessione. I JWT sono stateless — il token stesso contiene tutte le informazioni necessarie.
D: Come funziona la scadenza JWT?
R: La claim exp nel payload JWT specifica il tempo di scadenza come timestamp Unix. Dopo questo tempo, il token deve essere considerato non valido.
// Algoritmi di firma JWT comuni
Il valore alg dell’intestazione definisce come viene firmato il token. HS* usa un segreto condiviso; RS*, PS*, ES* ed EdDSA usano coppie di chiavi.
| alg | Algoritmo |
|---|---|
| HS256 | HMAC + SHA-256 |
| HS512 | HMAC + SHA-512 |
| RS256 | RSA PKCS#1 v1.5 + SHA-256 |
| PS256 | RSASSA-PSS + SHA-256 |
| ES256 | ECDSA P-256 + SHA-256 |
| EdDSA | Ed25519 |
// Verificare un JWT nel codice
Decodificare non verifica nulla. In fase di verifica indica sempre esplicitamente gli algoritmi consentiti.
Node.js (jsonwebtoken) jwt.verify(token, secret, { algorithms: ['HS256'] })
Python (PyJWT) jwt.decode(token, key, algorithms=["HS256"])
PHP (firebase/php-jwt) JWT::decode($token, new Key($key, 'HS256'))
Go (golang-jwt) jwt.Parse(token, keyFunc, jwt.WithValidMethods([]string{"HS256"}))
Java (jjwt) Jwts.parser().verifyWith(key).build().parseSignedClaims(token)
>> Altre domande
D: Cosa significano i claim standard iss, sub, aud, exp, nbf, iat e jti?
R: iss è l’emittente, sub il soggetto (di solito l’ID utente), aud il destinatario previsto, exp la scadenza, nbf l’inizio di validità, iat il momento di emissione e jti un identificatore univoco del token. Le date sono in secondi Unix.
D: Un JWT è cifrato?
R: Un normale JWT firmato (JWS) non è cifrato, è solo codificato in Base64URL: chiunque può leggerne il contenuto. La firma protegge solo dalla manomissione. Non inserirvi dati sensibili oppure usa un JWE cifrato.
D: Come verifico la firma di un JWT?
R: Serve la chiave: il segreto condiviso per HS256 o la chiave pubblica per RS256/ES256. Il server ricalcola la firma su Intestazione.Payload e la confronta. Questo decodificatore funziona nel browser e non verifica la firma al posto tuo: usa una libreria affidabile.
D: Quali sono gli errori di sicurezza comuni con i JWT?
R: Frequenti: fidarsi del valore alg del token stesso (soprattutto none), segreti HS256 deboli, mancato controllo di exp, iss e aud, dati sensibili nel payload e token di lunga durata salvati in localStorage.