Skip to main content
CheckTown
Validators

JWT Validator: Controleer JSON Web Token structuur en claims

Gepubliceerd 6 min lezen
In dit artikel

Wat is een JWT?

Een JWT (JSON Web Token) is een compact, URL-veilig tokenformaat dat wordt gebruikt om informatie veilig over te dragen tussen partijen als een JSON-object. Gedefinieerd door RFC 7519 zijn JWT's de de facto standaard voor authenticatie en autorisatie in moderne webapplicaties en API's.

JWT's zijn zelfstandig — ze bevatten alle informatie die nodig is om de authenticiteit van het token te verifiëren en gebruikersclaims te extraheren zonder een database te bevragen. Dit maakt ze ideaal voor staatloze authenticatie in gedistribueerde systemen en microservicearchitecturen.

JWT-structuur

Een JWT bestaat uit drie Base64URL-gecodeerde delen gescheiden door punten: header.payload.handtekening.

  • Header — een JSON-object dat het tokentype (JWT) en het ondertekeningsalgoritme (bijv. HS256, RS256, ES256) specificeert
  • Payload — een JSON-object met claims: geregistreerde claims (iss, sub, exp, iat), openbare claims en privéclaims
  • Handtekening — gemaakt door de gecodeerde header en payload te ondertekenen met een geheime sleutel (HMAC) of een privésleutel (RSA/ECDSA)

Probeer gratis — geen aanmelding vereist

Valideer een JWT →

Hoe JWT-validatie werkt

JWT-validatie omvat structurele controles, handtekeningverificatie en claimsvalidatie.

  • Structuurcontrole — het token moet exact drie Base64URL-gecodeerde segmenten bevatten, gescheiden door twee punten
  • Headervalidatie — de header moet geldige typ- en alg-velden bevatten. Het algoritme moet overeenkomen met wat de server verwacht
  • Handtekeningverificatie — de handtekening wordt herberekend met behulp van de header, payload en de ondertekeningssleutel. Als de herberekende handtekening overeenkomt, is het token niet gemanipuleerd
  • Claimsvalidatie — exp (vervaldatum), nbf (niet vóór) en iss (uitgever) claims worden gecontroleerd aan de hand van de huidige tijd en verwachte waarden

Veelvoorkomende gebruiksscenario's

JWT's ondersteunen authenticatie en autorisatie in de moderne webstack.

  • API-authenticatie — clients bevatten JWT's in Authorization-headers (Bearer-schema) om API-verzoeken te authenticeren zonder sessies
  • Single sign-on (SSO) — identiteitsproviders geven JWT's uit die meerdere applicaties accepteren, waardoor naadloze cross-applicatie-authenticatie mogelijk is
  • OAuth 2.0-toegangstokens — veel OAuth-implementaties gebruiken JWT's als toegangstokens, waarbij scopes en machtigingen rechtstreeks in het token worden gecodeerd
  • Microservicecommunicatie — services geven JWT's door om gebruikerscontext en autorisatiebeslissingen over servicegrenzen te verspreiden

JWT-beveiligingsbest practices

JWT's zijn krachtig, maar vereisen zorgvuldige behandeling om veelvoorkomende beveiligingsvalkuilen te vermijden.

  • Valideer altijd het algoritme — laat het alg-veld van het token nooit bepalen welk algoritme uw server gebruikt. Dit voorkomt de none-algoritme-aanval
  • Stel korte vervaltijden in — JWT's kunnen niet worden ingetrokken zodra ze zijn uitgegeven. Houd exp-tijden kort (15 minuten voor toegangstokens) en gebruik vernieuwingstokens voor langdurige sessies
  • Gebruik asymmetrische algoritmen voor gedistribueerde systemen — RS256 of ES256 stellen services in staat tokens te verifiëren zonder het ondertekeningsgeheim te delen
  • Sla nooit gevoelige gegevens op in de payload — JWT's zijn gecodeerd, niet versleuteld. Iedereen kan de payload decoderen. Bewaar geheimen in uw database, niet in het token

Veelgestelde vragen

Kan een JWT worden gedecodeerd zonder de geheime sleutel?

Ja. JWT-payloads zijn Base64URL-gecodeerd, niet versleuteld. Iedereen kan de header en payload decoderen en lezen. De geheime sleutel is alleen nodig om de handtekening te verifiëren — om te bevestigen dat het token niet is gewijzigd.

Wat is het verschil tussen JWS en JWE?

JWS (JSON Web Signature) is wat de meeste mensen bedoelen met JWT — een ondertekend token. JWE (JSON Web Encryption) is een versleuteld token waarbij de payload niet kan worden gelezen zonder de decoderingssleutel. De meeste JWT's zijn JWS-tokens.

Moet ik JWT's opslaan in localStorage of cookies?

HttpOnly-cookies zijn veiliger omdat ze niet toegankelijk zijn via JavaScript (waardoor XSS-diefstal wordt voorkomen). localStorage is kwetsbaar voor XSS-aanvallen. Voor gevoelige applicaties gebruikt u HttpOnly Secure SameSite-cookies.

Gerelateerde Tools