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: