Generatore e verificatore JWT
Crea e verifica JSON Web Token con HS256, RS256, PS256, ES256 o EdDSA. Modifica i claim, imposta exp e iat e controlla le firme nel tuo browser.
Chiavi e token sono segreti. Tutto viene firmato e verificato in locale con la Web Crypto API del tuo browser: non viene caricato nulla.
Crea un JWT firmato
Questo browser non supporta Ed25519 in Web Crypto, quindi EdDSA non è disponibile.
Le chiavi di test vengono generate nel tuo browser e inserite qui sotto. Tieni per te la chiave privata o il segreto; condividi solo la chiave pubblica.
Verifica un JWT
Come creare un JWT firmato
- Scegli l’Algoritmo: HS256/384/512 (segreto condiviso), RS256/384/512 o PS256/384/512 (RSA), ES256/384/512 (ECDSA su P-256, P-384 o P-521) oppure EdDSA (Ed25519, se il tuo browser lo supporta).
- Modifica l’Header (JSON) e il Payload (claim JSON). Il campo
algsegue sempre l’algoritmo selezionato etypvaleJWTper impostazione predefinita. - Usa i pulsanti dei claim temporali per aggiungere le date: iat = adesso, nbf = adesso, oppure scegli una durata come “tra 1 ora” e premi Imposta exp. I valori sono NumericDate, cioè secondi trascorsi dal 1° gennaio 1970 UTC.
- Inserisci il Segreto (algoritmi HS, come testo o Base64/Base64url tramite Formato del segreto) oppure la Chiave privata (PEM o JWK). Non hai ancora una chiave? Premi Genera chiave di test.
- Premi Firma token, poi Copia il risultato oppure premi Verifica questo token per controllarlo subito.
Come verificare un JWT
- Incolla il token in Token da verificare.
- Scegli l’Algoritmo atteso. Lasciando “Dall’header del token” viene accettato qualunque algoritmo indicato nell’header, tranne
none; scegliendo un algoritmo preciso lo strumento rifiuta ogni token firmato in modo diverso, proprio come dovrebbe fare un server reale. - Inserisci il segreto oppure la Chiave pubblica (PEM o JWK): un blocco PEM
PUBLIC KEY,RSA PUBLIC KEYoCERTIFICATE, una JWK o un JWK Set (viene usata la chiave il cuikidcorrisponde all’header). - Se vuoi, imposta una Tolleranza orologio (secondi) per accettare piccole differenze tra gli orologi, poi premi Verifica token.
Il risultato indica se la firma è valida e poi confronta exp (scadenza) e nbf (non prima di) con l’ora attuale del tuo computer. Un token con firma corretta ma con una scadenza nel passato viene segnalato come scaduto, non come valido.
Chiavi e formati
Per firmare, lo strumento accetta blocchi PKCS#8 PRIVATE KEY, blocchi PKCS#1 RSA PRIVATE KEY e SEC1 EC PRIVATE KEY (convertiti internamente in PKCS#8) e JWK private. Le chiavi protette da password vanno prima esportate senza password. Genera chiave di test crea un segreto casuale della dimensione dell’hash per gli algoritmi HS, una coppia di chiavi RSA da 2048 bit per RS e PS, la curva corrispondente per ES oppure una coppia Ed25519. Ottieni le chiavi in PEM e JWK, già inserite su entrambi i lati, così un ciclo completo di firma e verifica funziona subito.
Le firme seguono la RFC 7515 e la RFC 7518: RSA-PSS usa un salt lungo quanto l’hash e le firme ECDSA sono la concatenazione grezza r||s. L’implementazione riproduce l’esempio HS256 della RFC 7515, appendice A.1.
Note sulla sicurezza
- Tutto avviene nel tuo browser con la Web Crypto API. Né i token né le chiavi vengono inviati altrove, ma è comunque meglio usare chiavi di test anziché segreti di produzione.
alg: nonenon viene mai firmato né accettato.- I segreti HMAC dovrebbero essere lunghi almeno quanto l’hash (32 byte per HS256). Un segreto più corto genera un avviso.
- Una firma dimostra integrità e provenienza, non che i claim siano appropriati: i server devono controllare anche
iss,aude gli scope.
Domande frequenti
Che differenza c'è tra HS256 e RS256?
HS256 usa un unico segreto condiviso sia per firmare sia per verificare, quindi chiunque possa verificare potrebbe anche falsificare token. RS256 (come PS256, ES256 ed EdDSA) firma con una chiave privata e verifica con una chiave pubblica che si può pubblicare senza rischi.
Perché una firma valida mostra comunque un errore?
Perché il token è fuori dal suo periodo di validità: exp è nel passato oppure nbf è nel futuro. Il controllo della firma e quello delle date vengono riportati separatamente.
Perché alg "none" viene rifiutato?
Un token non firmato può crearlo chiunque. Accettarlo è stata una vulnerabilità classica delle librerie JWT, per questo lo strumento lo rifiuta sia in firma sia in verifica.
Posso usare la mia chiave RSA o EC?
Sì. Incolla la chiave privata in PEM o JWK per firmare e la chiave pubblica per verificare. Lo strumento controlla che il tipo di chiave e la curva corrispondano all’algoritmo selezionato.
Perché EdDSA è disattivato?
Il tuo browser non supporta ancora Ed25519 in Web Crypto. Le versioni recenti di Chrome, Edge, Firefox e Safari lo supportano.
Strumenti correlati
- Decoder JWT Decodifica header e payload di un JWT, leggi exp, iat e nbf come date e verifica firme HS256, RS256, PS256, ES256 o EdDSA nel tuo browser.
- Generatore HMAC Calcola un HMAC-SHA1, SHA-256, SHA-384 o SHA-512 con chiave testo, hex o Base64, ottieni output hex e Base64 e verifica la firma di un webhook nel browser.
- Convertitore di timestamp Unix Converti timestamp Unix in secondi o millisecondi in date leggibili in ora locale, UTC e ISO 8601, e trasforma qualsiasi data in tempo epoch.
- Formattatore e validatore JSON Formattatore e validatore JSON gratuito che formatta, minifica e controlla il JSON nel browser, con gli errori di sintassi indicati per riga e colonna.