JWT-decoder
Lees de header, de claims en de vervaldatum van een JSON Web Token in je browser. Alleen decoderen: er wordt geen handtekening gecontroleerd.
Draait volledig in je browser. Er wordt niets geüpload, gelogd of opgeslagen.
Dit decodeert. Het verifieert niet. Niets hieronder vertelt je of het token echt is. Iedereen die een ondertekend token heeft, kan de claims ervan lezen, en iedereen kan een token schrijven dat er zo uitziet. Controleer de handtekening in je applicatie, met je sleutel.
Plak een token en zie de header, de claims en de vervaldatum. Het decoderen gebeurt in je browser: het token wordt niet verstuurd, niet gelogd en niet opgeslagen.
Deze tool controleert de handtekening niet, en niets van wat hij je laat zien betekent dat het token echt is.
Hoe het werkt
Een JSON Web Token bestaat uit drie base64url-gecodeerde delen, gescheiden door punten: een header die zegt met welk algoritme het is ondertekend, een payload met claims, en een handtekening over de eerste twee. De eerste twee zijn gecodeerd, niet versleuteld: iedereen die het token heeft kan ze lezen, en dat is precies wat hier gebeurt.
De geregistreerde tijdclaims worden als leesbare datums getoond: `exp` wanneer het niet meer geldig is, `nbf` wanneer het geldig wordt, `iat` wanneer het is uitgegeven. Ze worden vergeleken met je klok om te zeggen waar het token zich in zijn geldigheidsvenster bevindt.
De handtekening wordt getoond zoals ze geschreven was en niet gedecodeerd. Het is een handtekening over bytes, niet over tekst, en haar als tekens weergeven zou suggereren dat ze iets zegt.
Voorbeelden
| Geval | Invoer | Resultaat |
|---|---|---|
| Een token dat verklaart dat het geen handtekening heeft | eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIn0. | alg none, typ JWT, sub 1234567890 |
Veelgestelde vragen
Waarom controleert de tool de handtekening niet?
Omdat controleren de ondertekeningssleutel vereist, en een pagina die daarom vraagt, vraagt je het geheim dat je systeem beschermt in een website te plakken. Er is ook een subtielere reden: een decoder die leek te controleren, zou je uitnodigen te vertrouwen op een payload die iedereen geschreven kan hebben. Controleer in je applicatie, met je eigen sleutel.
Is een JWT versleuteld?
Nee. Een ondertekend token is gecodeerd, en dat is iets anders: iedereen die het heeft kan al zijn claims lezen, zonder sleutel. Zet nooit iets in een token wat de drager niet mag zien. Versleutelde tokens bestaan wel — ze hebben vijf delen in plaats van drie — en deze tool kan ze niet lezen.
Wat betekent algoritme “none”?
Dat het token helemaal geen handtekening heeft. Het is de oudste aanval op JWT: de handtekening weghalen, `alg` op `none` zetten en hopen dat de ontvangende bibliotheek het accepteert. De pagina waarschuwt bij zo'n token; als je er een ziet dat je niet zelf hebt gemaakt, behandel het dan als vijandig.
Verlaat mijn token de browser?
Nee. Het decoderen draait lokaal in JavaScript, en deze tool heeft geen deellink, want een link zou het token in een URL zetten, en dan komt het in de browsergeschiedenis en in de serverlogs terecht.
Goed om te weten
- Alleen decoderen. Er wordt geen handtekening gecontroleerd, en niets op deze pagina zegt of een token echt is.
- Het token wordt in je browser gedecodeerd en nooit verstuurd, gelogd of opgeslagen. De tool heeft JavaScript nodig; zonder JavaScript wordt er helemaal niets gedecodeerd.
- Een ondertekend token kan worden gelezen door iedereen die het heeft. Behandel al zijn claims als openbaar.