Decoder e generatore di JWT
Incolla un JSON Web Token per leggere header e claim, vedere quando scade e verificarne la firma. Il tuo token non lascia questa pagina.
Aggiungi questo calcolatore al tuo sito
Copia il codice e incollalo nell'HTML della tua pagina. È gratis; mantieni il link di credito, per favore.
Come è fatto un JWT
Un JSON Web Token (RFC 7519) è formato da tre stringhe Base64URL unite da punti: header.payload.firma. L'header indica l'algoritmo usato per la firma, il payload contiene i claim (ID utente, ruoli, scadenza) e la firma viene calcolata sulle prime due parti.
Con HS256 la firma è un HMAC calcolato con un segreto condiviso, quindi lo stesso segreto firma e verifica. RS256, PS256 ed ES256 firmano con una chiave privata e verificano con una chiave pubblica: così molti servizi possono controllare i token senza poterne creare.
Verificare un token in sicurezza
- Verifica sempre la firma lato server e rifiuta alg "none".
- Fissa l'algoritmo atteso: non lasciare che lo scelga l'header del token.
- Controlla exp, nbf, iss e aud, con un margine di uno o due minuti per le differenze di orologio.
- Usa token di breve durata e trattali come password: questo decoder funziona offline, ma molti altri inviano il token a un server.
Claim JWT registrati (RFC 7519)
| Claim | Nome | Significato |
|---|---|---|
iss | Emittente | Chi ha creato e firmato il token |
sub | Soggetto | A chi si riferisce il token, di solito un ID utente |
aud | Destinatario | A chi è destinato il token |
exp | Scadenza | Secondi dal 1970 dopo i quali va rifiutato |
nbf | Non prima di | Secondi dal 1970 prima dei quali va rifiutato |
iat | Emesso il | Quando è stato creato |
jti | ID del JWT | ID univoco, per impedire che il token venga riutilizzato |
Domande frequenti
Chiunque può leggere un JWT?
Sì. Header e payload sono solo codificati in Base64URL, non cifrati, quindi chiunque abbia il token può leggerli. Non mettere mai password o segreti nel payload di un JWT.
Decodificare un JWT ne verifica la validità?
No. La decodifica legge solo il contenuto. Solo la verifica della firma con il segreto o la chiave pubblica giusti dimostra che il token non è stato falsificato né modificato, e il server deve controllare anche exp, nbf e aud.
Perché il mio token risulta scaduto se è appena stato emesso?
exp, iat e nbf sono in secondi dal 1970, non in millisecondi. Un token creato con Date.now() di JavaScript (millisecondi) senza dividere per 1000 sembra scadere tra decine di migliaia di anni, mentre le differenze di orologio tra server possono far sembrare un token appena emesso già scaduto o non ancora valido.
Quello che incollo viene inviato a un server?
No. Questo strumento funziona interamente nel tuo browser, con JavaScript e la Web Crypto API integrata. Niente di ciò che scrivi, incolli o apri viene caricato o salvato.