JWT-decoder
Handtekening wordt gecontroleerd...
Plak een JWT (drie met base64url gecodeerde delen, gescheiden door punten) en de decoder toont de header, payload en signatuur – gedecodeerd en netjes geformatteerd – samen met het gedetecteerde algoritme, de vervaltijd van het token in uw lokale tijd, en of nbf (not-before), iat (issued-at) en exp (expiry) consistent zijn. Optionele verificatie van de handtekening als u de geheime sleutel of de publieke sleutel hebt.
Hoe je een JWT decodeert
-
1
Plak het token
Drie base64url-strings gescheiden door `.` (header.payload.signatuur).
-
2
Lees de gedecodeerde header
Algoritme, type en sleutel-ID (`kid`): het algoritme geeft aan welk sleuteltype vereist is voor verificatie.
-
3
Lees de payload
Standaardclaims (`iss`, `sub`, `aud`, `exp`, `iat`, `nbf`, `jti`) plus eventuele aangepaste claims die uw applicatie uitgeeft.
-
4
Verifieer (optioneel)
Geef het HMAC-secret (voor HS256/384/512) of de openbare sleutel (voor RS256, ES256, etc.) op om te bevestigen dat de handtekening geldig is.
Anatomie van een JWT
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFsaWNlIiwiaWF0IjoxNjAwMDAwMDAwfQ
.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Elk segment is gecodeerd met base64url (niet het standaard base64). De header is JSON zoals {"alg":"HS256","typ":"JWT"}, de payload is JSON zoals {"sub":"1234567890","name":"Alice","iat":1600000000} en de signatuur is de HMAC- of RSA-handtekening van header.payload.
Standaardclaims (RFC 7519)
| Claim | Naam | Opmerkingen |
|---|---|---|
iss |
Uitgever | Wie het token heeft uitgegeven |
sub |
Onderwerp | Over wie het token gaat |
aud |
Doelgroep | Voor wie het token bedoeld is |
exp |
Vervaltijd | Unix-tijdstempel; wordt na deze tijd afgewezen |
nbf |
Niet voor | Unix-tijdstempel; wordt vóór deze tijd afgewezen |
iat |
Uitgegeven op | Unix-tijdstempel van het aanmaken van het token |
jti |
JWT-ID | Unieke identificator voor intrekkingslijsten |
Ondersteunde algoritmen
alg-waarde |
Sleuteltype |
|---|---|
HS256/HS384/HS512 |
Gedeelde HMAC-sleutel |
RS256/RS384/RS512 |
Publieke RSA-sleutel |
ES256/ES384/ES512 |
Publieke ECDSA-sleutel |
PS256/PS384/PS512 |
Publieke RSA-PSS-sleutel |
EdDSA / Ed25519 |
Edwards-kromme |
none |
Vertrouw dit nooit, niet-ondertekende tokens |
De valkuil alg: none
Vroege JWT-bibliotheken stonden "alg": "none"-tokens toe en accepteerden ze naïef als geldig. Doe altijd het volgende:
- Plaats de algoritmen die uw applicatie accepteert op een witte lijst.
- Wijs
alg: noneonvoorwaardelijk af. - Wijs
alg: HS256af wanneer uw verificatiecodeRS256verwacht (de aanval met ‘algoritmeverwarring’).
Wat JWT niet is
- Niet versleuteld. De header en de payload zijn base64-gecodeerd, wat triviaal te decoderen is. Plaats nooit geheimen in een JWT zonder die in JWE te verpakken.
- Standaard niet intrekbaar. Eenmaal uitgegeven is een JWT geldig tot
exp. Voor intrekking hebt u een zwarte lijst nodig, of een korte vervaltijd plus vernieuwingstokens. - Geen vervanging voor sessiecookies in elk gebruiksscenario. Ondoorzichtige tokens die aan de serverkant worden opgeslagen, zijn vaak eenvoudiger en veiliger.
Veelvoorkomende fouten
- De header vertrouwen.
kidenalgkomen uit het token zelf. Een gecompromitteerde server kan ze willekeurig instellen; valideer altijd tegen een vaste lijst. - De afwijking van
nbfeniatnegeren. Klokverloop betekent datiat > nowkan voorkomen. Sta een kleine marge toe (30–60 s). - Volledige JWT’s loggen. De payload bevat vaak gebruikers-ID’s, e-mailadressen en rechten, PII die niet in stdout terecht mag komen.
- HS256 met een zwakke sleutel gebruiken. Een sleutel van 16 tekens is binnen enkele minuten met brute force te kraken. Gebruik minstens 256 bit willekeurige entropie.
Veelgestelde vragen
Nee. De decodering wordt uitgevoerd in uw browser. Het token blijft lokaal opgeslagen, belangrijk omdat JWT’s vaak sessiedata, gebruikers-ID’s en toegangsrechten bevatten.
Ja. Als u het gedeelde HMAC-secret of de PEM-gecodeerde publieke sleutel plakt, vindt de verificatie plaats in uw browser. De sleutel verlaat uw apparaat nooit.
Het betekent dat het token niet is ondertekend. Gebruik dergelijke tokens nooit in een productieomgeving, omdat ze eenvoudig kunnen worden vervalst. Verschillende bekende CVE’s betroffen specifiek bibliotheken die standaard alg: none accepteerden.
Het JWT-signeren bevestigt de echtheid van de gegevens, niet hun vertrouwelijkheid. De header en de payload zijn gecodeerd met Base64URL, een omkeerbare methode. Voor meer veiligheid wordt JWE (JSON Web Encryption) gebruikt rondom het JWT; plaats gevoelige gegevens liever niet in de payload.
Gerelateerde tools
Webpack-configuratiegenerator
Maak een webpack.config.js voor webpack 5 vanuit een kort formulier: stel entry, uitvoermap en mode in en zet TypeScript, Babel, een CSS-loader, HtmlWebpackPlugin en een dev-server aan.
Telefoonnummers controleren
Controleer de structuur van telefoonnummers per land en bekijk regio, type en E.164-, internationale, nationale en RFC 3966-notatie.
SVG-golfgenerator
Genereer een vloeiende SVG-golfscheiding voor headers en footers met instelbare amplitude, frequentie, kleur en positie boven of onder. Kopieer de SVG-code.
Decimaal naar hexadecimaal converter
Voer een decimaal geheel getal in en ontvang direct de hexadecimale waarde, inclusief negatieve waarden als 64-bits tweecomplement.
ASCII-tabelreferentie
Volledige ASCII-tabel van 0 tot 127 met decimale, hexadecimale, octale en binaire waarden en HTML-numerieke referentienotatie, inclusief control codes zoals NUL, LF en DEL.
Sneltoetsenoverzicht
Zoek gedocumenteerde standaardsneltoetsen voor VS Code, Chrome en Bash met GNU Readline op macOS, Windows en Linux.
Tool beschikbaar in andere talen
- Decodificador JWT [PT]
- مُفكّك JWT [AR]
- JWT-Dekoder [DE]
- Decodificador JWT [ES]
- JWTデコーダ [JA]
- JWT-avkodare [SV]
- JWT 해독기 [KO]
- Décodeur JWT [FR]
- Decoder JWT [ID]
- Mã giải mã JWT [VI]
- ตัวถอดรหัส JWT [TH]
- Dekoder JWT [PL]
- JWT Decoder [EN]
- Decoder JWT [IT]
- Декодировщик JWT [RU]
- JWT Dekoderi [TR]
- JWT 解码器 [ZH]