JWT-decoder
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 |
Publieke ECDSA-sleutel |
PS256/PS384 |
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
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.
HTML-tekenreferentie
Een doorzoekbare lijst met HTML-entiteiten, hun benoemde en numerieke codes, plus kopiëren met één klik voor speciale tekens en symbolen.
Sneltoetsenoverzicht
Zoek gedocumenteerde standaardsneltoetsen voor VS Code, Chrome en Bash met GNU Readline op macOS, Windows en Linux.
E-mailvalidator
Valideer een e-mailadres: RFC 5322-syntaxcontrole, live MX-record-zoekopdracht, plus details over lokaal deel, domein en lengte. Er wordt geen e-mail verstuurd.
EditorConfig-generator
Genereer een .editorconfig-bestand met uw regels voor inspringstijl en -grootte, regeleinde, tekenset en witruimte voor consistente opmaak in alle IDE's en editors.
Changelog-generator
Maak een markdown-sectie in Keep a Changelog-stijl op basis van gecategoriseerde items. Plak de items onder Added, Changed, Fixed en Removed, kies Markdown of platte tekst en kopieer de uitvoer.
Tool beschikbaar in andere talen
- Decodificador JWT [PT]
- JWTデコーダ [JA]
- JWT-avkodare [SV]
- Mã giải mã JWT [VI]
- مُفكّك JWT [AR]
- JWT-Dekoder [DE]
- Decodificador JWT [ES]
- Décodeur JWT [FR]
- ตัวถอดรหัส JWT [TH]
- JWT 해독기 [KO]
- Decoder JWT [ID]
- Dekoder JWT [PL]
- JWT Decoder [EN]
- Decoder JWT [IT]
- Декодировщик JWT [RU]
- JWT Dekoderi [TR]
- JWT 解码器 [ZH]