Codificatore e Generatore JWT
Generatore JWT online gratis. Costruisci header e payload, firma con HS256, RS256 o ES256 all'istante nel browser; segreto e chiave non lasciano il dispositivo.
Cos'è un codificatore JWT?
Un codificatore JWT costruisce e firma crittograficamente un JSON Web Token a partire da un'intestazione e da un payload di attestazioni. Un JWT, definito nella RFC 7519, è composto da tre sezioni codificate in Base64URL unite da punti: header.payload.signature. L'intestazione nomina l'algoritmo di firma; il payload trasporta le attestazioni (su chi è il token, cosa può fare, quando scade); e la firma è una prova crittografica, calcolata sull'intestazione e sul payload con un segreto o una chiave privata, che permette al destinatario di rilevare manomissioni.
"Il JSON Web Token (JWT) è un formato compatto di rappresentazione delle attestazioni, pensato per ambienti con vincoli di spazio come gli header Authorization HTTP e i parametri di query URI." — RFC 7519, Sezione 1
La codifica è l'inverso della decodifica. Un decodificatore JWT legge le attestazioni di un token esistente; un codificatore prende le attestazioni che fornisci e produce un token firmato nuovo di zecca. Il passo della firma è ciò che separa un vero JWT da un Base64 arbitrario — senza una firma valida, nessun verificatore accetterà il token. Questo strumento firma usando la Web Crypto API nativa del browser per le famiglie HMAC (HS), RSA (RS, PS) ed ECDSA (ES), quindi l'intera operazione avviene sul tuo dispositivo con zero dipendenze e zero chiamate di rete.
Gli sviluppatori ricorrono costantemente a un codificatore JWT: per coniare un token che esercita un endpoint API protetto, per riprodurre la forma esatta delle attestazioni che un server OAuth emette così da poter fare il debug di un bug, per costruire fixture per test di integrazione o per consegnare a un collega un Bearer token pronto all'uso per un comando curl. Poiché il payload è codificato, non cifrato, un JWT è sicuro da passare in rete ma non deve mai trasportare segreti — chiunque abbia il token può leggere ogni attestazione, e solo la firma impedisce loro di cambiarne una.
Il lavoro con i JWT si combina naturalmente con altri strumenti per sviluppatori. Dopo la firma, decodifica il token per confermarne le attestazioni, converti exp e iat tra il tempo Unix e date leggibili, oppure calcola un hash SHA-256 quando ti serve la funzione di hash sottostante su cui è costruito l'HMAC di HS256. Poiché ogni segmento del JWT è codificato in Base64URL, uno strumento Base64 è utile quando ispezioni un token a mano; per un approfondimento sulla codifica, consulta la nostra guida ai fondamenti di Base64.
// Sign a JWT in the browser with the Web Crypto API (HS256)
async function encodeJwt(payload, secret) {
const b64url = (bytes) =>
btoa(String.fromCharCode(...new Uint8Array(bytes)))
.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
const enc = (obj) =>
b64url(new TextEncoder().encode(JSON.stringify(obj)));
const header = { alg: 'HS256', typ: 'JWT' };
const signingInput = `${enc(header)}.${enc(payload)}`;
const key = await crypto.subtle.importKey(
'raw', new TextEncoder().encode(secret),
{ name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
const sig = await crypto.subtle.sign(
'HMAC', key, new TextEncoder().encode(signingInput));
return `${signingInput}.${b64url(sig)}`;
}
const token = await encodeJwt({ sub: 'user_123', exp: 1999999999 }, 'my-secret');
// → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImV4cCI6MTk5OTk5OTk5OX0.... Caratteristiche principali
Genera e firma JWT all'istante
Modifica il payload e guarda il token firmato aggiornarsi in tempo reale — intestazione, payload e firma calcolati al volo. Nessun pulsante Genera, nessun round-trip verso un server.
Copertura completa degli algoritmi
Firma con HS256/384/512, RS256/384/512, PS256/384/512 ed ES256/384/512 — ogni famiglia JWS comune, tutte tramite la Web Crypto API nativa del browser.
Le chiavi non lasciano mai il dispositivo
Il tuo segreto e la tua chiave privata PKCS8 sono usati interamente nel browser. Nulla viene caricato, registrato o memorizzato — sicuro per lo sviluppo e la risposta agli incidenti.
Aiutanti per le attestazioni rapide
Inserisci iss, sub, aud, iat, nbf o un exp di un'ora con un solo clic — niente timestamp Unix manuali, niente errori di sintassi.
Output evidenziato a colori
Il token firmato è segmentato in intestazione, payload e firma con colori distinti, così la struttura è evidente a colpo d'occhio e facile da copiare.
Zero dipendenze
Costruito solo sulla Web Crypto API e su JSON del browser — nessuna libreria esterna, nessuna telemetria, nessuna chiamata di rete di alcun tipo.
Esempi
Token di sessione HS256
{
"sub": "user_123",
"name": "Alice",
"role": "admin",
"iat": 1715000000,
"exp": 1999999999
}
secret: a-string-secret-at-least-256-bits-long eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsIm5hbWUiOiJBbGljZSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTcxNTAwMDAwMCwiZXhwIjoxOTk5OTk5OTk5fQ.<HMAC-SHA256 signature>
Un token HMAC-SHA256 firmato con un segreto condiviso — la configurazione più comune per l'autenticazione di sessione stateless. Chiunque abbia lo stesso segreto può verificarlo.
Access token RS256
{
"iss": "https://auth.example.com",
"aud": "api.example.com",
"sub": "90087165",
"scope": "read:user write:post",
"iat": 1715000000,
"exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (PKCS8) eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2F1dGguZXhhbXBsZS5jb20iLCJhdWQiOiJhcGkuZXhhbXBsZS5jb20iLCJzdWIiOiI5MDA4NzE2NSIsInNjb3BlIjoicmVhZDp1c2VyIHdyaXRlOnBvc3QiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<RSA signature>
Un access token in stile OAuth firmato con RSA. Il token è firmato con la tua chiave privata e verificato da chiunque possieda la chiave pubblica corrispondente — ideale quando il verificatore non deve poter coniare token.
Token compatto ES256
{
"sub": "device-42",
"iat": 1715000000,
"exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (P-256) eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkZXZpY2UtNDIiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<ECDSA P-256 signature>
Un token ECDSA sulla curva P-256. Le firme ES256 sono molto più corte di quelle RSA pur offrendo sicurezza equivalente, il che mantiene il token piccolo per ambienti con vincoli.
Come si usa
- 1
Modifica le attestazioni del payload
Scrivi come JSON le attestazioni che il tuo token richiede nell'editor del payload. Usa i chip per le attestazioni rapide per inserire iss, sub, aud, iat, nbf o un exp di un'ora senza digitare timestamp.
- 2
Scegli l'algoritmo e inserisci la chiave
Scegli un algoritmo di firma. Per HS256/384/512 inserisci un segreto; per gli algoritmi RS, PS o ES incolla una chiave privata PEM PKCS8. Il token viene firmato localmente mentre digiti.
- 3
Copia il JWT firmato
Il token firmato appare all'istante, evidenziato a colori per segmento. Clicca Copia per inserirlo in un header Authorization, un comando curl o un test. La tua chiave non ha mai lasciato il browser.
Common Errors
Usare un segreto HMAC debole
La sicurezza di HS256 dipende interamente dall'entropia del segreto. Un segreto corto o facile da indovinare permette agli attaccanti di forzarlo a forza bruta e falsificare token. Usa almeno 256 bit di casualità.
secret: "password123" // guessable, low entropy
secret: base64(crypto.randomBytes(32)) // >=256 random bits
Omettere l'attestazione exp
Un token senza exp non scade mai. Se trapela, non c'è un punto di revoca naturale. Imposta sempre una scadenza adeguata al tipo di token.
{ "sub": "user_123", "role": "admin" } // no exp { "sub": "user_123", "role": "admin", "exp": 1715003600 } Incollare una chiave PKCS1 invece di PKCS8
La Web Crypto API importa solo chiavi private PKCS8. Una chiave RSA PKCS1 tradizionale non riesce a essere importata — convertila prima.
-----BEGIN RSA PRIVATE KEY----- // PKCS1, not supported
openssl pkcs8 -topk8 -nocrypt -in pkcs1.pem -out pkcs8.pem
Casi d'uso comuni
- Genera token per il test delle API
- Genera un Bearer token HS256 in pochi secondi per esercitare un endpoint protetto da curl, Postman o un test di integrazione.
- Riproduci token OAuth e OIDC
- Costruisci un token RS256 o ES256 che rispecchi ciò che emette il tuo server di autorizzazione, così puoi fare il debug di mismatch di attestazioni e audience.
- Crea fixture di test
- Produci token firmati deterministici per test unitari e di integrazione senza dover avviare un server di autenticazione completo.
- Debug dei fallimenti di autorizzazione
- Ricrea la forma del token di un cliente — issuer, audience, scope, scadenza — per scoprire perché un backend lo rifiuta.
- Convalida un verificatore
- Firma token con una chiave nota per confermare che il tuo middleware di verifica accetti i token validi e rifiuti quelli manomessi.
- Prototipa i flussi di autenticazione
- Consegna ai colleghi token pronti all'uso mentre allestisci un nuovo login, un microservizio o una chiamata service-to-service.
Dettagli tecnici
- Conforme a RFC 7519 / 7515 / 7518
- Produce token JWS conformi a RFC 7519 (JWT), RFC 7515 (JWS) e RFC 7518 (JWA), con gli identificatori di algoritmo registrati nell'intestazione.
- Firma nativa con Web Crypto
- Firma tramite crypto.subtle per HMAC, RSASSA-PKCS1-v1_5, RSA-PSS ed ECDSA. Le firme ECDSA vengono emesse come r||s grezzo, esattamente come richiede JWS.
- Base64URL, zero dipendenze
- Intestazione e payload sono codificati in Base64URL con l'alfabeto URL-safe (RFC 4648), senza padding. Nessuna libreria esterna, nessuna chiamata di rete, nessuna telemetria.
Buone pratiche
- Imposta sempre una scadenza
- Includi un'attestazione exp così un token trapelato smette di essere valido. I tempi di vita brevi riducono il raggio d'azione — minuti per gli access token, non giorni.
- Tieni i segreti fuori dal payload
- Un payload JWT è leggibile da chiunque abbia il token. Metti identificatori e scope al suo interno; mai password, chiavi API o PII completi.
- Firma lato server in produzione
- Usa questo strumento per test e debug. Nei sistemi reali, firma i token sul server con una libreria mantenuta e una chiave presa dal tuo gestore di segreti.
Domande frequenti
Come si genera un JWT online?
Cos'è un generatore JWT?
header.payload.signature che puoi usare come Bearer token. È l'inverso di un decodificatore JWT: invece di leggere un token esistente, ne crea uno nuovo firmato con il tuo segreto (HS256) o la tua chiave privata (RS256/ES256). Questo generatore gira interamente nel tuo browser, quindi il token viene prodotto all'istante e la tua chiave di firma non lascia mai il dispositivo. Questo generatore JWT è gratis e sicuro da usare?
È sicuro inserire qui il mio segreto o la mia chiave privata?
Qual è la differenza tra HS256 e RS256?
Quali algoritmi supporta questo codificatore JWT?
Come imposto l'attestazione exp (scadenza)?
exp al payload come timestamp Unix in secondi — per esempio "exp": 1999999999. Il modo più rapido è il chip exp +1h sotto il payload, che inserisce una scadenza a un'ora da adesso. Puoi anche aggiungere iat (issued-at) e nbf (not-before) allo stesso modo. Ricorda che exp è in secondi, non millisecondi, e che i verificatori lo confrontano con il proprio orologio, quindi mantieni sincronizzati gli orari dei server per evitare rifiuti prematuri. Per convertire una data leggibile in un timestamp Unix, usa il nostro convertitore di timestamp Unix. Come ottengo una chiave privata PEM PKCS8 per RS256 o ES256?
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.pem. Per ECDSA P-256: openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec-private.pem. Entrambi i comandi emettono un blocco PEM PKCS8 che inizia con -----BEGIN PRIVATE KEY-----, che è esattamente ciò che questo strumento si aspetta. Incolla l'intero blocco, incluse le righe di intestazione e di chiusura. La chiave pubblica corrispondente — usata per verificare il token — può essere derivata con openssl pkey -in private.pem -pubout. Come verifico il token che ho appena generato?
jwt.verify(token, secretOrPublicKey, { algorithms: ['HS256'] }) in Node.js, PyJWT.decode(token, key, algorithms=['RS256']) in Python o jwt.Parse(token, keyFunc) in Go. Non verificare mai con una lista di algoritmi vuota o con verify_signature=False in produzione — fissa sempre l'algoritmo esatto che ti aspetti. Cosa dovrei mettere nel payload?
iss (issuer), sub (subject — di solito un ID utente), aud (audience), exp (scadenza), nbf (not before), iat (issued at) e jti (ID token). Accanto a queste puoi aggiungere attestazioni applicative come role, scope o email. Non mettere segreti nel payload — un JWT è codificato, non cifrato, quindi chiunque abbia il token può leggere ogni attestazione. Mantieni i token sotto circa 4 KB così entrano negli header Authorization e nei cookie. Un JWT è cifrato?
Perché la mia firma RS256 o ES256 fallisce?
-----BEGIN RSA PRIVATE KEY----- (PKCS1) con openssl pkcs8 -topk8 -nocrypt -in old.pem -out pkcs8.pem; (2) la curva non corrisponde all'algoritmo — ES256 richiede una chiave P-256, ES384 richiede P-384, ES512 richiede P-521; (3) hai incollato una chiave pubblica o un certificato invece della chiave privata; oppure (4) la chiave è cifrata con una passphrase, che la Web Crypto API non può importare direttamente. Decifrala prima con openssl pkey e incolla il blocco PKCS8 non cifrato. Questo strumento supporta il token non firmato alg:none?
alg:none non ha firma, il che significa che chiunque può falsificarne uno — è la radice di una classica vulnerabilità di bypass dell'autenticazione JWT. Poiché lo scopo stesso di un codificatore è produrre un token firmato, questo strumento offre solo algoritmi di firma reali. Se stai studiando alg:none per ricerca sulla sicurezza, puoi costruirne uno a mano codificando in Base64URL l'intestazione e il payload e lasciando vuoto il segmento della firma — il token termina comunque con un punto finale (header.payload.) — ma non dovresti mai accettare un token del genere in produzione. Posso generare un JWT nel codice invece?
jsonwebtoken.sign(payload, secret, { algorithm: 'HS256', expiresIn: '1h' }). In Python: jwt.encode(payload, key, algorithm='RS256') con PyJWT. In Go: jwt.NewWithClaims(jwt.SigningMethodES256, claims).SignedString(privateKey). Questo strumento è il modo più veloce per produrre un token per un test rapido, una richiesta curl o una fixture — ma nel codice applicativo dovresti generare i token lato server con una libreria mantenuta e una chiave caricata dal tuo gestore di segreti, mai hard-coded. Strumenti correlati
Vedi tutti gli strumenti →Decodificatore JWT
Strumenti di sicurezza
Decodifica token JWT online con il nostro decodificatore JWT gratis. Ispeziona intestazione, payload, firma, scadenza e attestazioni. 100% browser — token mai fuori dal dispositivo. Nessuna registrazione, nessun tracciamento.
Generatore Hash MD5 e Strumento Checksum File
Strumenti di sicurezza
Genera hash MD5, SHA-256, SHA-1 e SHA-512 online gratis. Calcola l'hash di testo o file nel browser, verifica checksum e copia i risultati. Senza registrazione.
Generatore di Password Casuali — Personalizzabile e Sicuro
Strumenti di sicurezza
Genera password casuali sicure all'istante — gratis, 100% nel tuo browser. Personalizza lunghezza e caratteri, batch fino a 50 con analisi entropia.
Generatore Hash SHA-1 (Legacy 160-bit)
Strumenti di sicurezza
Genera hash SHA-1 nel browser — output hex a 40 caratteri, senza upload. Strumento legacy per impronte Git, verifica di vecchi certificati e audit di migrazione. I dati non lasciano mai il tuo dispositivo.
Generatore Hash SHA-256 e Strumento Checksum
Strumenti di sicurezza
Genera hash SHA-256 online gratis. Calcola l'hash di testo o file nel browser, verifica checksum e copia l'output hex a 64 caratteri. Senza registrazione; i dati non lasciano mai la pagina.
Generatore Hash SHA-3 (Keccak SHA3-256)
Strumenti di sicurezza
Genera hash SHA-3 online gratis. Costruzione a spugna NIST FIPS 202 — lo standard post-SHA-2. Output SHA3-256 in 64 caratteri hex. Solo browser tramite js-sha3 caricato in modo lazy; zero upload.