Hoe JWT-tokens te decoderen en te inspecteren

· 4 min leestijd

JSON Web Tokens (JWT) zijn de meest voorkomende manier om authenticatie te beheren in moderne webapplicaties. Wanneer er iets misgaat aan de auth-kant — een gebruiker wordt zonder reden uitgelogd, machtigingen zijn verkeerd, of een API geeft 401 terug — is het decoderen van het JWT vaak de eerste debug-stap.

Wat een JWT bevat

Een JWT heeft drie delen gescheiden door punten:

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U

Header — bevat het algoritme (HS256, RS256, etc.) en het tokentype.

{"alg": "HS256", "typ": "JWT"}

Payload — bevat claims (beweringen) over de gebruiker en het token.

{"sub": "1234567890", "name": "Alice", "exp": 1700000000}

Handtekening — een cryptografische vingerafdruk die garandeert dat het token niet is gewijzigd. U kunt deze niet lezen zonder de ondertekeningssleutel.

Veelvoorkomende JWT-claims

Claim Volledige naam Inhoud
sub Subject Gebruikers-ID of -identificator
exp Expiration Unix-tijdstempel van vervaldatum
iat Issued At Unix-tijdstempel van creatie
iss Issuer Wie het token heeft gemaakt (uw auth-server)
aud Audience Voor wie het token is bestemd
nbf Not Before Het token is niet geldig voor deze datum
jti JWT ID Unieke identificator van het token

Hoe een JWT te decoderen

  1. Plak uw token — voer het volledige JWT (formaat header.payload.handtekening) in de decoder in.
  2. Bekijk de gedecodeerde secties — de tool toont de header (algoritme), de payload (claims) en de handtekening in de vorm van geformatteerde JSON.
  3. Controleer de claims — onderzoek de vervaldatum, uitgever, subject en alle aangepaste claims.

Debuggen met JWT's

Verlopen token? Controleer de claim exp. Converteer de Unix-tijdstempel naar een leesbare datum. Als deze verstreken is, is het token verlopen en moet het worden vernieuwd.

Verkeerde machtigingen? Zoek naar role- of scope-claims in de payload. Ze variëren afhankelijk van de implementaties maar lijken vaak op "role": "admin" of "scope": "read write".

Gebruikersidentiteitsprobleem? De claim sub identificeert de gebruiker. Controleer of deze overeenkomt met de verwachte ID.

Token geweigerd? Controleer de claim aud (audience). Als de API een specifieke audience verwacht en het token een andere heeft, zal het worden afgewezen.

Belangrijke beveiligingsopmerkingen

Veelgestelde vragen

Kan ik een JWT-handtekening verifiëren met een decoder?

Nee. Handtekeningverificatie vereist het ondertekeningsgeheim of de openbare sleutel, bewaard op uw server. Een decoder toont u wat er in het token staat, maar de cryptografische verificatie moet plaatsvinden op uw backend. Vertrouw nooit een ongeverifieerd JWT in productie.

Is het veilig om een JWT in een online tool te plakken?

Ja, wanneer de tool in uw browser draait. Browser-decoders verwerken het token lokaal — niets wordt naar een server verzonden. Vermijd tools die netwerkaanvragen doen met uw token.

Wat is de exp-claim?

De exp-claim (expiration) is een Unix-tijdstempel die aangeeft wanneer het token verloopt. Na deze datum moet het token worden afgewezen. Controleer deze claim altijd om authenticatieproblemen te debuggen.

Kunnen JWT's worden versleuteld?

Standaard JWT's (JWS) zijn ondertekend maar niet versleuteld — iedereen kan de payload decoderen. JWE-tokens (JSON Web Encryption) zijn versleuteld, maar minder gangbaar. Plaats nooit gevoelige gegevens (wachtwoorden, geheimen) in een standaard JWT-payload.