> decoderen | inspecteren | verifiëren <
// Decodeer en inspecteer JSON Web Tokens (JWT) direct
Lokale Verwerking
100% client-side JWT decodering. Uw tokens verlaten nooit uw browser.
Auto-Decodering
Decodeer JWT tokens automatisch bij plakken of typen.
Volledige Token Inspectie
Bekijk header, payload en handtekening. Controleer algoritme en vervaldatum.
// OVER JWT DECODERING
JWT Structuur:
Een JSON Web Token (JWT) bestaat uit drie Base64URL-gecodeerde delen gescheiden door punten: header.payload.handtekening. De header specificeert het algoritme en tokentype. De payload bevat claims (gegevens). De handtekening verifieert de integriteit van het token.
Voorbeeld:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.signature → {"alg":"HS256"} + {"sub":"1234"}
Veelvoorkomende Toepassingen:
- >Debuggen van authenticatietokens in webapplicaties
- >Inspectie van OAuth 2.0 en OpenID Connect tokens
- >Verificatie van tokenvervaldatum en claims
- >Begrip van JWT structuur volgens RFC 7519
- >Controle van Base64URL coderingsintegriteit
>> veelgestelde vragen
V: Wat is een JSON Web Token (JWT)?
A: JWT (JSON Web Token) is een open standaard (RFC 7519) voor het veilig verzenden van informatie tussen partijen als een JSON-object. Het is compact, URL-veilig en wordt veel gebruikt voor authenticatie.
V: Wat zijn de drie delen van een JWT?
A: Een JWT bestaat uit drie delen gescheiden door punten: de Header (algoritme en type), de Payload (claims en gegevens) en de Handtekening (verificatiehash). Elk deel is Base64URL-gecodeerd.
V: Kan een JWT worden gedecodeerd zonder de geheime sleutel?
A: Ja, de header en payload van een JWT kunnen door iedereen worden gedecodeerd omdat ze eenvoudig Base64URL-gecodeerd (niet versleuteld) zijn. De geheime sleutel is alleen nodig om de handtekening te verifiëren.
V: Wat is het verschil tussen JWT en sessie-gebaseerde authenticatie?
A: Sessies slaan de status op de server op met een sessie-ID cookie. JWTs zijn stateless — het token zelf bevat alle benodigde informatie.
V: Hoe werkt JWT vervaldatum?
A: De exp claim in de JWT payload specificeert de vervaltijd als een Unix timestamp. Na deze tijd moet het token als ongeldig worden beschouwd.
// Veelgebruikte JWT-ondertekeningsalgoritmen
De alg-waarde in de header bepaalt hoe de handtekening wordt gemaakt. HS* gebruikt een gedeeld geheim; RS*, PS*, ES* en EdDSA gebruiken sleutelparen.
| alg | Algoritme |
|---|---|
| HS256 | HMAC + SHA-256 |
| HS512 | HMAC + SHA-512 |
| RS256 | RSA PKCS#1 v1.5 + SHA-256 |
| PS256 | RSASSA-PSS + SHA-256 |
| ES256 | ECDSA P-256 + SHA-256 |
| EdDSA | Ed25519 |
// Een JWT verifiëren in code
Decoderen controleert niets. Geef bij het verifiëren altijd expliciet de toegestane algoritmen op.
Node.js (jsonwebtoken) jwt.verify(token, secret, { algorithms: ['HS256'] })
Python (PyJWT) jwt.decode(token, key, algorithms=["HS256"])
PHP (firebase/php-jwt) JWT::decode($token, new Key($key, 'HS256'))
Go (golang-jwt) jwt.Parse(token, keyFunc, jwt.WithValidMethods([]string{"HS256"}))
Java (jjwt) Jwts.parser().verifyWith(key).build().parseSignedClaims(token)
>> Meer vragen
V: Wat betekenen de standaard-claims iss, sub, aud, exp, nbf, iat en jti?
A: iss is de uitgever, sub het onderwerp (meestal de gebruikers-id), aud de beoogde ontvanger, exp de vervaltijd, nbf het begin van de geldigheid, iat het uitgiftemoment en jti een unieke token-id. Tijden zijn Unix-seconden.
V: Is een JWT versleuteld?
A: Een gewone ondertekende JWT (JWS) is niet versleuteld, alleen Base64URL-gecodeerd: iedereen kan de inhoud lezen. De handtekening beschermt alleen tegen manipulatie. Zet er geen gevoelige gegevens in of gebruik een versleutelde JWE.
V: Hoe verifieer ik de handtekening van een JWT?
A: Je hebt de sleutel nodig: het gedeelde geheim bij HS256 of de publieke sleutel bij RS256/ES256. De server berekent de handtekening over Header.Payload opnieuw en vergelijkt die. Deze decoder werkt in de browser en verifieert de handtekening niet voor je: gebruik een beproefde bibliotheek.
V: Wat zijn veelgemaakte beveiligingsfouten met JWT?
A: Vaak: de alg-waarde uit het token zelf vertrouwen (vooral none), zwakke HS256-geheimen, exp, iss en aud niet controleren, gevoelige gegevens in de payload en langlevende tokens in localStorage bewaren.