tigtools

Generatore JWT

Crea e firma un JSON Web Token per i test, oppure verifica se la firma HMAC di un token corrisponde a un segreto. La firma utilizza la Web Crypto API del browser.

Funziona nel browser Nessuna registrazione

Modalità
Il segreto rimane in questa scheda del browser e non viene mai inviato da nessuna parte. Tuttavia, non incollare segreti di firma di produzione in alcun sito web: chiunque abbia il segreto può creare token validi per il tuo sistema. Usa qui segreti di test.

alg viene impostato dal menu dell'algoritmo; typ predefinito è JWT.

Claim come sub, iat ed exp. I tempi sono in secondi dal 1970 (UTC).

Inserisci un segreto per firmare il token.

Come si usa

  1. Scegli HS256, HS384 o HS512.
  2. Modifica i claim del payload e clicca su «Imposta iat e exp» per aggiungere l'ora corrente e una scadenza.
  3. Inserisci un segreto di prova o generane uno casuale a 256 bit.
  4. Copia il token firmato. Per verificare un token, passa a «Verifica firma», incollalo e inserisci il segreto.

Come funziona

Un JSON Web Token (RFC 7519) è composto da tre parti codificate in Base64URL: un header, un payload di claim e una firma. Con gli algoritmi HMAC HS256, HS384 e HS512, la firma è un HMAC con SHA-256, SHA-384 o SHA-512 calcolato su “header.payload”, usando un segreto condiviso come chiave. Chiunque conosca il segreto può creare e verificare i token.

Lo strumento serializza header e payload come JSON compatto, li codifica e li firma con crypto.subtle, la Web Crypto API integrata nel browser. Il campo alg nell'header corrisponde sempre all'algoritmo scelto, typ è JWT per impostazione predefinita e gli eventuali altri campi dell'header, come kid, vengono mantenuti. “Imposta iat e exp” scrive l'ora corrente come iat (issued at) e aggiunge la durata scelta come exp, entrambi in secondi dal 1° gennaio 1970 UTC. Il risultato corrisponde ad altre librerie JWT; ad esempio, il classico token di esempio di jwt.io viene riprodotto esattamente.

Il segreto può essere testo semplice (i suoi byte UTF-8 sono la chiave) oppure byte codificati in Base64/Base64URL, come usano molti framework. Il pulsante del segreto casuale crea 32 byte casuali con crypto.getRandomValues. Per HS256, usa almeno 32 byte casuali; segreti brevi scelti da una persona possono essere indovinati offline a partire da qualsiasi token.

La verifica decodifica il token, controlla che usi un algoritmo HMAC e ricalcola la firma con crypto.subtle.verify. Mostra inoltre quando exp o nbf indicano che il token è scaduto o non ancora valido. RS256, ES256 e altri algoritmi a chiave pubblica non sono supportati e la verifica qui non controlla issuer, audience o altre claim che la tua applicazione potrebbe richiedere.

Esempi

Testare un'API in locale

Il tuo server di sviluppo si aspetta token HS256 firmati con “dev-secret-change-me”. Imposta sub su un ID utente di prova, fai clic su “Imposta iat e exp” con 1 ora, inserisci il segreto e invia il token in un header Authorization: Bearer.

Verificare quale segreto ha firmato un token

Un token di staging viene rifiutato. Incollalo in «Verifica firma» e prova il segreto di staging: «Firma non valida» indica che il token è stato firmato con un segreto diverso o che il segreto è in un formato diverso (testo o Base64).

Riprodurre l'esempio di jwt.io

Con l'header {"alg":"HS256","typ":"JWT"}, il payload {"sub":"1234567890","name":"John Doe","iat":1516239022} e il segreto «your-256-bit-secret», il token termina con SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c, come su jwt.io.

Domande frequenti

Il mio segreto viene inviato al vostro server?

No. La firma e la verifica vengono eseguite con la Web Crypto API nel browser e il segreto non viene archiviato né inviato da nessuna parte. Consigliamo comunque di usare solo segreti di prova, perché un segreto di firma reale non dovrebbe mai essere digitato in un sito web.

Perché la firma non è valida anche se il segreto è corretto?

Controlla il formato del segreto. Alcuni sistemi usano il testo del segreto, altri prima lo decodificano da Base64, ottenendo byte della chiave diversi. Controlla anche che il token non sia stato modificato e che usi lo stesso algoritmo.

Posso creare token RS256 o ES256?

Non con questo strumento. Supporta solo gli algoritmi HMAC a chiave condivisa HS256, HS384 e HS512.

Il payload è crittografato?

No. Un JWT firmato è solo codificato: chiunque può decodificarlo e leggere il payload. La firma dimostra solo che non è stato modificato. Non inserire password o altri segreti nel payload.

Privacy

I token vengono creati e verificati solo nel browser con la Web Crypto API. Header, payload, token e segreto non vengono caricati, archiviati né inclusi nelle analisi.