Naar de inhoud
ToolMug

JWT Decoder

Plak een JSON Web Token om de header en payload te zien, controleer of hij verlopen is en verifieer de handtekening met een geheime sleutel of publieke sleutel. Alles gebeurt lokaal, dus productietokens worden nooit naar een server gestuurd.

Draait in je browser: niets wat je invoert wordt geüpload

Decoderen verifieert de handtekening niet. Iedereen kan een token met willekeurige claims maken.

Zo gebruik je het

  1. Plak de token — met of zonder het voorvoegsel "Bearer ". De drie delen krijgen elk een eigen kleur.
  2. Lees de gedecodeerde header en payload. De claims iat, nbf en exp worden getoond als datum met relatieve tijd.
  3. Wil je de handtekening verifiëren, voer dan het geheim in voor HS256/384/512, of plak de publieke sleutel (PEM of JWK) voor RS-, PS-, ES- en EdDSA-tokens.
  4. Kopieer de gedecodeerde JSON als je hem elders nodig hebt.

Opties uitgelegd

Header
Metadata over de token, meestal alg (het ondertekeningsalgoritme) en typ. Een kid-veld laat zien welke sleutel de token heeft ondertekend.
Payload
De claims. Geregistreerde claims zijn onder meer sub (subject), iss (issuer), aud (audience), iat (issued at), nbf (not before) en exp (expiry), allemaal tijden in Unix-seconden.
Handtekening
Bewijst dat header en payload niet zijn gewijzigd. Om dit te controleren is het geheim (HMAC) of de publieke sleutel van de uitgever (RSA, ECDSA, EdDSA) nodig.
Geheim is Base64-gecodeerd
Sommige diensten slaan HMAC-geheimen Base64-gecodeerd op. Vink dit aan als het geheim dat je hebt de gecodeerde vorm is.

Veelgebruikte claims

Claim Betekenis Voorbeeld
sub Over wie de token gaat (gebruikers-ID) "1234567890"
iss Wie de token heeft uitgegeven "https://accounts.example.com"
aud Voor wie de token bedoeld is "my-api"
exp Vervaltijd, Unix-seconden 1790427600
iat Uitgegeven op, Unix-seconden 1790424000
nbf Niet geldig vóór, Unix-seconden 1790424000
jti Unieke token-ID, voorkomt replay "a1b2c3"

Voorbeeld

De token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c decodeert naar de header {"alg":"HS256","typ":"JWT"} en een payload met sub, name en iat (18 januari 2018). Met het geheim your-256-bit-secret klopt de handtekening.

Veelgestelde vragen

Is het veilig om hier een productie-JWT te plakken?

De token wordt gedecodeerd door JavaScript in je browser en wordt niet geüpload of gelogd. Behandel toegangstokens toch als wachtwoorden — wie een geldige token in handen krijgt, kan hem gebruiken totdat hij verloopt.

Bewijst het decoderen van een JWT dat hij echt is?

Nee. Header en payload zijn alleen Base64URL-gecodeerd, dus iedereen kan ze lezen of vervalsen. Alleen een succesvolle handtekeningcontrole met de juiste sleutel toont dat de token door de verwachte partij is uitgegeven.

Waarom mislukt de verificatie met het juiste geheim?

Controleer of het geheim Base64-gecodeerd is, of er geen spatie of regeleinde aan het einde staat, en of het algoritme in de header overeenkomt met wat de uitgever gebruikt. Elke wijziging aan de token, ook al is het één teken, breekt ook de handtekening.

Wat betekent "alg none"?

De token claimt niet ondertekend te zijn. Servers moeten zo'n token afwijzen behalve als ze dat expliciet verwachten; het accepteren ervan heeft al tot echte authenticatie-lekken geleid.

Hoe krijg ik de publieke sleutel voor RS256-tokens?

Identity providers publiceren hun sleutels als JWKS, meestal op /.well-known/jwks.json. Kopieer de sleutel waarvan de kid overeenkomt met de header van de token en plak hem hier als JWK.

Privacy

Deze tool draait volledig in je browser. Je bestanden en tekst worden op je eigen apparaat verwerkt en nooit naar onze servers geüpload.

Gerelateerde tools