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 (JSON Object Signing and Encryption)
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.
JSON Web Signature (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.
JSON Web Encryption (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: