JWT-decoder

Plak een JSON Web Token en lees de header en payload als opgemaakte JSON — met verlooptijden vertaald naar leesbare datums. Volledig offline.

1.157 weergaven

Hoe het werkt

Een JSON Web Token is een compacte tekenreeks opgebouwd uit drie met punten gescheiden, Base64URL-gecodeerde delen: header.payload.signature. Base64URL is een URL-veilige variant van Base64 die +// vervangt door -/_ en de opvulling met = aan het einde weglaat, zodat het resultaat zonder escaping in een URL of HTTP-header kan staan. De header is een klein JSON-object dat het ondertekeningsalgoritme en het tokentype benoemt — meestal {"alg":"HS256","typ":"JWT"}. De payload is een JSON-object met "claims": willekeurige sleutel/waarde-paren die beschrijven wie het token vertegenwoordigt en wat het mag doen, plus enkele geregistreerde tijdclaims — iat (uitgegeven op), nbf (niet geldig vóór) en exp (verloopt op), allemaal opgeslagen als Unix-tijdstempels. De handtekening wordt berekend over de eerste twee delen met het algoritme dat in de header staat en een sleutel die alleen de uitgevende server bezit.

Plak hier een token en de tool splitst het bij de twee punten, decodeert de header en payload met Base64URL, en toont elk als ingesprongen JSON. Eventuele exp/iat/nbf-waarden worden bovendien omgezet naar een leesbare datum, met een badge die in één oogopslag toont of het token op dit moment verlopen is.

JWT's vormen de ruggengraat van vrijwel alle moderne authenticatie: OAuth 2.0-toegangstokens, OpenID Connect ID-tokens en aangepaste sessiesystemen gebruiken allemaal dit formaat, omdat een server er een zelfstandig bewijsstuk mee kan uitgeven dat andere diensten kunnen lezen zonder databaseraadpleging — zolang ze de handtekening kunnen verifiëren. Gangbare algoritmes zijn HS256 (HMAC met gedeelde sleutel) en RS256/ES256 (asymmetrische RSA- of elliptische-curvehandtekeningen, waarbij de uitgever een privésleutel bewaart en iedereen kan verifiëren met de bijbehorende publieke sleutel).

Wat u moet weten

Decoderen is niet hetzelfde als verifiëren. Header en payload zijn alleen gecodeerd, niet versleuteld, dus iedereen kan ze zonder sleutel lezen — en iedereen kan ook een token vervalsen met welke claims dan ook. Wat een JWT betrouwbaar maakt, is uitsluitend de handtekening, en het controleren van een handtekening vereist het geheim (HMAC-algoritmes) of de publieke sleutel van de uitgever (RSA/ECDSA-algoritmes). Die controle hoort thuis op een server die de sleutel bezit; ze kan niet veilig in een browsertool worden gedaan, want een geheim daar blootstellen zou het doel ervan tenietdoen. Behandel deze decoder strikt als een hulpmiddel voor debuggen — nooit als bewijs dat een token echt of nog geldig is.

Ga ook zorgvuldig om met wat u plakt: een JWT bevat sessie- of autorisatiegegevens, behandel het dus als een wachtwoord en plak geen live productietokens in enige tool op een gedeelde machine. Tokens met vijf door punten gescheiden delen zijn JWE (versleuteld), geen JWS (ondertekend) — deze decoder verwerkt de veel gangbaardere ondertekende variant. En vertrouw in uw eigen verificatiecode nooit blindelings op het alg-veld — een bekende aanval verleidt naïeve implementaties ertoe alg: none te accepteren of RS256 te verwisselen voor HS256, en dat is precies waarom handtekeningverificatie thuishoort in beproefde bibliotheken in plaats van zelfgeschreven code.

Veelgestelde vragen

Bevestigt decoderen dat het token geldig is?

Nee — decoderen leest alleen de inhoud. Handtekeningverificatie vereist de ondertekeningssleutel of publieke sleutel en hoort op uw server thuis. Iedereen kan een token met elke gewenste payload maken; alleen de handtekening bewijst de authenticiteit.

Is het veilig om hier een echt productietoken te plakken?

De tool verzendt het token nooit — decoderen gebeurt lokaal. Behandel productietokens toch als wachtwoorden: gebruik bij voorkeur verlopen of testtokens wanneer u in gedeelde omgevingen debugt.

Waarom wordt mijn token niet gedecodeerd?

Controleer of u alle drie de door punten gescheiden delen hebt gekopieerd en er geen regeleinden zijn toegevoegd. Versleutelde tokens (JWE, vijf delen) kunnen zonder sleutel niet worden gelezen — deze tool verwerkt ondertekende (JWS) tokens, de gangbare soort.

Wat is het verschil tussen een JWS- en een JWE-token?

JWS (JSON Web Signature) is het ondertekende formaat dat deze tool decodeert — drie delen, leesbaar maar manipulatiebestendig. JWE (JSON Web Encryption) heeft vijf delen en de payload zelf is versleuteld, dus die kan helemaal niet worden gelezen zonder de decryptiesleutel; als uw token hier niet wordt gedecodeerd en vier punten heeft in plaats van twee, is het hoogstwaarschijnlijk een JWE.

Wat betekenen de claims exp, iat en nbf?

Alle drie zijn Unix-tijdstempels (seconden sinds 1970-01-01). iat registreert wanneer het token is uitgegeven, nbf markeert het vroegste moment waarop het geldig wordt, en exp markeert het moment waarop het niet meer geldig is. Een correct werkende server wijst elk token af waarvan de huidige tijd buiten het nbf-exp-venster valt.

Reacties

Nog geen reacties — schrijf de eerste!

Vergelijkbare tools