DevToolPal
IT

Encoder e firma JWT

Crea e firma un JSON Web Token da un payload JSON con HS256/384/512, oppure con RS, PS ed ES usando una chiave privata PEM.

Eseguito in locale, mai caricato

Opzioni

Formato del segreto

Payload (JSON)

0 caratteri · 0 B

JWT

0 caratteri · 0 B

Cosa fa

Un JSON Web Token (JWT, RFC 7519) è una stringa compatta e sicura per gli URL, divisa in tre parti da punti: un header che indica l’algoritmo di firma, un payload di claim e una firma sulle prime due parti. Le API usano i JWT come token bearer, i provider di identità come ID token.

Questo strumento crea e firma un token da un payload JSON. Supporta:

  • HS256, HS384, HS512: HMAC con un segreto condiviso, come testo o Base64.
  • RS256, RS384, RS512 e PS256, PS384, PS512: firme RSA con una chiave privata PEM.
  • ES256, ES384, ES512: firme ECDSA con una chiave privata EC.

Come si usa

  1. Scrivi il payload come oggetto JSON o fai clic su Esempio.
  2. Scegli l’Algoritmo e inserisci il segreto o incolla la chiave privata PEM in cima alla casella di input.
  3. Se vuoi, imposta iat all’ora attuale, aggiungi una scadenza (exp) o campi header extra come un ID chiave.
  4. Copia il token dall’output. Incollalo nel decoder JWT per esaminarlo.

Esempio

Con il segreto your-256-bit-secret, il payload seguente firmato con HS256 produce il noto token di esempio di jwt.io:

{"sub":"1234567890","name":"John Doe","iat":1516239022}

L’header è sempre scritto come {"alg":"HS256","typ":"JWT"} seguito dai campi extra aggiunti; alg segue sempre l’algoritmo scelto.

Buone pratiche

Mantieni i token di breve durata con una claim exp e imposta iss e aud così che un token per un servizio non possa essere riutilizzato su un altro. Sul server verifica sempre la firma con un elenco esplicito di algoritmi ammessi e rifiuta none. I segreti HMAC devono essere lunghi e casuali, almeno quanto l’output dell’hash (32 byte per HS256).

Domande frequenti

› Quale algoritmo scegliere?

Quello che verifica il tuo server. HS256 usa un segreto condiviso ed è comune all’interno di un unico sistema. RS256 ed ES256 firmano con una chiave privata e chiunque può verificare con la chiave pubblica, adatto a token controllati da più servizi. ES256 produce firme molto più corte di RS256.

› Quali formati di chiave privata sono accettati?

Chiavi PEM in PKCS#8 (BEGIN PRIVATE KEY), PKCS#1 RSA (BEGIN RSA PRIVATE KEY) e SEC1 EC (BEGIN EC PRIVATE KEY). Le chiavi cifrate vanno prima esportate senza passphrase. Per ES256, ES384 ed ES512 la chiave deve essere rispettivamente sulla curva P-256, P-384 o P-521.

› Il payload di un JWT è segreto?

No. Header e payload sono solo codificati in Base64URL e chiunque abbia il token può leggerli. La firma impedisce le modifiche, non la lettura. Non mettere mai password o altri segreti nel payload di un JWT.

› Il mio segreto o la chiave privata vengono salvati o inviati?

No. La firma avviene nel browser tramite la Web Crypto API. Il segreto o la chiave restano solo nella memoria di questa pagina: non vengono salvati, non finiscono nella barra degli indirizzi né nei link di condivisione. Evita comunque di incollare chiavi di produzione in pagine web che non controlli.