JWT-decoder
Decodeer de header en payload van een JWT, lees exp, iat en nbf als datum en verifieer HS256-, RS256-, ES256- of EdDSA-handtekeningen in je browser.
Tokens zijn inloggegevens. Deze tool decodeert en verifieert ze in je browser en verstuurt ze nergens naartoe.
Header
Payload
| Claim | Waarde | Datum | Status |
|---|
- Algoritme (alg)
- —
- Handtekening (Base64url)
- —
De handtekening verifiëren
HS256/384/512: voer het gedeelde geheim in. RS, PS, ES (256/384/512) en EdDSA: plak de publieke sleutel als PEM (publieke sleutel, publieke RSA-sleutel of certificaat) of als JWK (in een JWK Set wordt de sleutel op kid gekozen).
Zo decodeer je een JWT
- Plak het token in het veld JSON Web Token. Een volledige waarde
Authorization: Bearer …werkt ook: het voorvoegselBeareren eventuele regeleinden worden verwijderd. - Het token wordt gedecodeerd terwijl je typt (of klik op Decoderen). De Header en de Payload verschijnen als opgemaakte JSON, elk met een eigen knop Kopiëren.
- Bekijk de tabel Tijdclaims:
exp,nbfeniatworden getoond met hun ruwe waarde, de datum in jouw tijdzone, een relatieve tijd (“over 3 uur”, “2 dagen geleden”) en een status zoals Verlopen of Nog niet geldig. - Lees de waarschuwingen boven de resultaten, bijvoorbeeld wanneer
algopnonestaat of wanneer een datum eruitziet als milliseconden. - Wil je de handtekening controleren, vul dan de sleutel in onder De handtekening verifiëren en klik op Handtekening verifiëren.
Decoderen is niet verifiëren
Een JWT bestaat uit drie Base64url-delen, gescheiden door punten: header.payload.signature. De header en de payload zijn alleen gecodeerd, niet versleuteld. Iedereen die het token heeft, kan ze dus lezen, en deze tool kan elk token zonder sleutel decoderen. Dat betekent ook dat een gedecodeerde payload niets bewijst: iemand kan hem hebben aangepast. Alleen een geldige handtekening laat zien dat het token is uitgegeven door de houder van de sleutel en sindsdien niet is gewijzigd. Daarom staat er in de statusregel “Gedecodeerd (handtekening niet geverifieerd).” zolang je de handtekening niet hebt gecontroleerd.
Een token met vijf delen is een JWE (een versleutelde JWT). De inhoud ervan is niet te lezen zonder de ontsleutelingssleutel, en de tool meldt dat ook.
De handtekening verifiëren
- HS256, HS384, HS512 (HMAC): voer het gedeelde Geheim in. Geef bij Formaat van het geheim aan of het gewone tekst (UTF-8) is of Base64/Base64url, want sommige providers bewaren geheimen in Base64. Je kunt ook een JWK van het type
octplakken. Is het geheim korter dan de hashuitvoer (32 bytes voor HS256), dan meldt de tool dat het onder het minimum van RFC 7518 blijft. - RS256/384/512, PS256/384/512, ES256/384/512 en EdDSA: plak de Publieke sleutel (PEM of JWK). Geaccepteerde PEM-blokken zijn
PUBLIC KEY,RSA PUBLIC KEYenCERTIFICATE(de sleutel wordt dan uit het X.509-certificaat gehaald). Een JWK of een volledige JWK Set werkt ook: de sleutel waarvan dekidovereenkomt met de header wordt gebruikt. Privésleutels worden geweigerd; om te verifiëren heb je die nooit nodig. EdDSA ondersteunt Ed25519 in browsers waarvan Web Crypto dat implementeert.
De verificatie gebruikt de Web Crypto API van je browser. De melding “Ongeldige handtekening” betekent dat de sleutel niet klopt of dat het token is gewijzigd. Let op: het algoritme wordt uit de header van het token gehaald. Een echte server moet het verwachte algoritme juist vastleggen in zijn configuratie, anders kan een aanvaller het zelf kiezen.
Beveiligingstips
- Tokens zijn inloggegevens. Wie een geldig access token heeft, kan meestal namens de eigenaar handelen tot het verloopt. Deze tool decodeert en verifieert alles in je browser en stuurt het token of de sleutel nergens naartoe. Plak productietokens toch liever niet in tools die je niet kunt controleren.
alg: nonebetekent dat het token niet ondertekend is. Iedereen kan zo’n token vervalsen en een server moet het weigeren. De tool toont een waarschuwing en weigert zo’n token te “verifiëren”.- Tijdcontroles gebruiken hier de klok van je computer, zonder speling. Servers staan vaak een minuut of twee klokverschil toe.
- JWT-datums (NumericDate) zijn seconden sinds 1 januari 1970 UTC. Een waarde van 13 cijfers staat waarschijnlijk in milliseconden, een veelvoorkomende bug.
Veelgestelde vragen
Kan deze tool zeggen of een token geldig is?
De tool zegt of de handtekening klopt met een sleutel die jij opgeeft en of exp en nbf op dit moment in orde zijn. Of het token echt geaccepteerd wordt, hangt ook af van controles die alleen de server kent: de verwachte uitgever (iss), het publiek (aud), het algoritme en intrekking.
Waarom mislukt de verificatie terwijl het geheim klopt?
Controleer het Formaat van het geheim: een Base64-geheim dat als tekst wordt gelezen, levert een andere sleutel op. Zorg er ook voor dat er geen spatie of regeleinde aan het geheim is toegevoegd, want HMAC-sleutels worden byte voor byte vergeleken.
Wat is het verschil tussen RS256, PS256 en ES256?
Alle drie zijn handtekeningen met een publieke sleutel en SHA-256. RS256 gebruikt RSA met PKCS#1 v1.5-padding, PS256 gebruikt RSA met PSS-padding en ES256 gebruikt ECDSA op de P-256-curve, wat veel kortere handtekeningen geeft.
Waar vind ik de publieke sleutel van een provider?
Identiteitsproviders publiceren een JWKS (JSON Web Key Set), meestal gelinkt vanuit /.well-known/openid-configuration onder jwks_uri. Open die zelf en plak de JSON hier; de tool kiest de sleutel op kid en haalt zelf nooit iets op.
Is het veilig om mijn token hier te plakken?
Het token blijft op je apparaat: decoderen en verifiëren gebeuren lokaal en er wordt niets geüpload. Wil je extra voorzichtig zijn, gebruik dan een verlopen token of een testtoken als je alleen de structuur wilt bekijken.
Vergelijkbare tools
- HMAC-generator Bereken een HMAC-SHA1, SHA-256, SHA-384 of SHA-512 met een tekst-, hex- of Base64-sleutel, krijg hex en Base64 en controleer een webhook-signature.
- Base64 coderen en decoderen Gratis Base64-encoder en -decoder met volledige UTF-8-ondersteuning en een URL-veilige base64url-optie. Werkt volledig in je browser, er wordt niets geüpload.
- Unix-timestamp omrekenen Reken Unix-timestamps in seconden of milliseconden om naar een leesbare datum in lokale tijd, UTC en ISO 8601, en zet elke datum terug om naar epochtijd.
- JSON formatteren en valideren Gratis JSON-formatter en -validator die JSON in je browser leesbaar maakt, minifyt en controleert, met syntaxfouten gemeld per regel en kolom.