JWT-decoder
Decodeer een JSON Web Token (JWT) om de header, payload en handtekening te bekijken. Handig voor het debuggen en inspecteren van JWT-tokens die worden gebruikt bij authenticatie en autorisatie. De inhoud van uw JWT wordt nergens opgeslagen.
Payload (Claims):
Header (Ondertekeningsalgoritme & Tokentype):
Handtekening:
De handtekening wordt weergegeven als Base64URL-gecodeerde gegevens. Handtekeningverificatie wordt niet uitgevoerd door dit hulpmiddel.
Meer over JSON Web Tokens
JWT-formaat
Een JSON Web Token (JWT) is een compact, URL-veilig middel om claims over te dragen tussen twee partijen. Het bestaat uit drie Base64URL-gecodeerde delen gescheiden door punten: header.payload.signature. De header bevat doorgaans het tokentype (JWT) en het ondertekeningsalgoritme. De payload bevat de claims—uitspraken over een entiteit (doorgaans de gebruiker) en aanvullende metadata. De handtekening wordt gebruikt om te verifiëren dat het bericht onderweg niet is gewijzigd.
JOSE (JSON Object Signing and Encryption)
JWT maakt deel uit van het grotere JOSE (JSON Object Signing and Encryption) raamwerk, dat een gestandaardiseerde manier biedt om JSON-gebaseerde gegevens te beveiligen. JOSE omvat verschillende gerelateerde specificaties: JWS (JSON Web Signature) voor ondertekende tokens, JWE (JSON Web Encryption) voor versleutelde tokens, JWK (JSON Web Key) voor het weergeven van cryptografische sleutels, en JWA (JSON Web Algorithms) voor het specificeren van cryptografische algoritmen.
JSON Web Signature (JWS)
De meeste JWTs die u tegenkomt zijn JWS-tokens—ze zijn ondertekend maar niet versleuteld. Dit betekent dat iedereen de payload kan lezen door deze Base64URL te decoderen, maar ze kunnen deze niet wijzigen zonder de handtekening ongeldig te maken. JWS biedt integriteit en authenticiteit: u kunt verifiëren dat het token is uitgegeven door een vertrouwde partij en niet is gemanipuleerd.
Ondertekeningsalgoritmen
JWS ondersteunt verschillende cryptografische algoritmen voor het ondertekenen van tokens. Deze vallen in twee categorieën: symmetrische algoritmen (dezelfde sleutel voor ondertekening en verificatie) en asymmetrische algoritmen (privésleutel voor ondertekening, publieke sleutel voor verificatie).
HMAC-algoritmen (Symmetrisch)
HS256, HS384 en HS512 gebruiken HMAC (Hash-based Message Authentication Code) met respectievelijk SHA-256, SHA-384 of SHA-512. Dit zijn symmetrische algoritmen—dezelfde geheime sleutel wordt gebruikt om het token zowel te ondertekenen als te verifiëren. HMAC-algoritmen zijn snel en eenvoudig, maar vereisen veilige sleuteldistributie omdat beide partijen hetzelfde geheim nodig hebben.
RSA-algoritmen (Asymmetrisch)
RS256, RS384 en RS512 gebruiken RSASSA-PKCS1-v1_5 met SHA-256, SHA-384 of SHA-512. PS256, PS384 en PS512 gebruiken RSASSA-PSS (probabilistisch handtekeningschema). RSA-algoritmen gebruiken een privésleutel om te ondertekenen en een publieke sleutel om te verifiëren. Dit maakt het mogelijk de verificatiesleutel publiekelijk te delen zonder de beveiliging in gevaar te brengen—ideaal voor gedistribueerde systemen waar meerdere diensten tokens moeten verifiëren.
Elliptische Curve-algoritmen (Asymmetrisch)
ES256, ES384 en ES512 gebruiken ECDSA (Elliptic Curve Digital Signature Algorithm) met respectievelijk P-256, P-384 of P-521 curves. EC-algoritmen bieden dezelfde beveiliging als RSA maar met kleinere sleutelgroottes, wat resulteert in kleinere handtekeningen en snellere bewerkingen. ES256 wordt steeds populairder voor moderne toepassingen vanwege de efficiëntie.
JSON Web Encryption (JWE)
Terwijl JWS ondertekende tokens biedt, biedt JWE versleutelde tokens waarbij de payload vertrouwelijk is. JWE-tokens hebben vijf delen in plaats van drie: header, versleutelde sleutel, initialisatievector, ciphertekst en authenticatietag. JWE ondersteunt verschillende versleutelingsalgoritmen waaronder AES-GCM en AES-CBC met HMAC. Let op: deze decoder verwerkt alleen JWS-tokens; JWE-tokens vereisen ontsleuteling met de juiste sleutel.
RFC-specificaties
De JWT- en JOSE-standaarden zijn gedefinieerd in verschillende IETF RFC's: