Decodificatore JWT

Decodifica un JSON Web Token (JWT) per visualizzare intestazione, payload e firma. Utile per il debug e l'ispezione dei token JWT utilizzati nell'autenticazione e nell'autorizzazione. Il contenuto del tuo JWT non verrà salvato da nessuna parte.

Payload (Claims):

Intestazione (Algoritmo di firma e tipo di token):

Firma:

La firma è visualizzata come dati codificati in Base64URL. La verifica della firma non è eseguita da questo strumento.

Maggiori informazioni sui JSON Web Token

Formato JWT

Un JSON Web Token (JWT) è un mezzo compatto e sicuro per URL per rappresentare claim da trasferire tra due parti. È composto da tre parti codificate in Base64URL separate da punti: header.payload.signature. L'intestazione contiene tipicamente il tipo di token (JWT) e l'algoritmo di firma. Il payload contiene i claim, ovvero dichiarazioni su un'entità (tipicamente l'utente) e metadati aggiuntivi. La firma è utilizzata per verificare che il messaggio non sia stato alterato lungo il percorso.

JOSE (Firma e crittografia di oggetti JSON)

JWT fa parte del più ampio framework JOSE (JSON Object Signing and Encryption), che fornisce un modo standardizzato per proteggere i dati basati su JSON. JOSE include diverse specifiche correlate: JWS (JSON Web Signature) per i token firmati, JWE (JSON Web Encryption) per i token crittografati, JWK (JSON Web Key) per rappresentare le chiavi crittografiche, e JWA (JSON Web Algorithms) per specificare gli algoritmi crittografici.

Firma Web JSON (JWS)

La maggior parte dei JWT che si incontrano sono token JWS: sono firmati ma non crittografati. Ciò significa che chiunque può leggere il payload decodificandolo in Base64URL, ma non può modificarlo senza invalidare la firma. JWS fornisce integrità e autenticità: è possibile verificare che il token sia stato emesso da una parte fidata e non sia stato manomesso.

Algoritmi di firma

JWS supporta vari algoritmi crittografici per la firma dei token. Questi si dividono in due categorie: algoritmi simmetrici (stessa chiave per firma e verifica) e algoritmi asimmetrici (chiave privata per la firma, chiave pubblica per la verifica).

Algoritmi HMAC (Simmetrici)

HS256, HS384 e HS512 utilizzano HMAC (Hash-based Message Authentication Code) con SHA-256, SHA-384 o SHA-512 rispettivamente. Questi sono algoritmi simmetrici: la stessa chiave segreta è utilizzata sia per firmare che per verificare il token. Gli algoritmi HMAC sono veloci e semplici ma richiedono una distribuzione sicura delle chiavi poiché entrambe le parti necessitano dello stesso segreto.

Algoritmi RSA (Asimmetrici)

RS256, RS384 e RS512 utilizzano RSASSA-PKCS1-v1_5 con SHA-256, SHA-384 o SHA-512. PS256, PS384 e PS512 utilizzano RSASSA-PSS (schema di firma probabilistico). Gli algoritmi RSA utilizzano una chiave privata per firmare e una chiave pubblica per verificare. Ciò consente di condividere pubblicamente la chiave di verifica senza compromettere la sicurezza, ideale per sistemi distribuiti dove più servizi devono verificare i token.

Algoritmi a Curve Ellittiche (Asimmetrici)

ES256, ES384 e ES512 utilizzano ECDSA (Elliptic Curve Digital Signature Algorithm) con le curve P-256, P-384 o P-521 rispettivamente. Gli algoritmi a curve ellittiche offrono la stessa sicurezza di RSA ma con chiavi più piccole, risultando in firme più piccole e operazioni più veloci. ES256 è sempre più popolare per le applicazioni moderne grazie alla sua efficienza.

Crittografia Web JSON (JWE)

Mentre JWS fornisce token firmati, JWE fornisce token crittografati dove il payload è confidenziale. I token JWE hanno cinque parti invece di tre: intestazione, chiave crittografata, vettore di inizializzazione, testo cifrato e tag di autenticazione. JWE supporta vari algoritmi di crittografia tra cui AES-GCM e AES-CBC con HMAC. Nota che questo decodificatore gestisce solo i token JWS; i token JWE richiedono la decrittazione con la chiave appropriata.

Specifiche RFC

Gli standard JWT e JOSE sono definiti in diversi RFC dell'IETF:

  • RFC 7519 definisce JSON Web Token (JWT)
  • RFC 7515 definisce JSON Web Signature (JWS)
  • RFC 7516 definisce JSON Web Encryption (JWE)
  • RFC 7517 definisce JSON Web Key (JWK)
  • RFC 7518 definisce JSON Web Algorithms (JWA).

Strumenti correlati