JWT Decoder

JSON Web Tokens decoderen en inspecteren

Probeer een voorbeeld

JWT Token

Draait lokaal · Veilig om secrets te plakken
Probeer ook:JWT Encoder

Wat is een JWT (JSON Web Token)?

Een JSON Web Token (JWT) is een compact, URL-veilig tokenformaat gedefinieerd in RFC 7519. Het codeert een set claims als een JSON-object, ondertekent dit vervolgens — en versleutelt het optioneel — zodat de ontvanger kan verifiëren dat de gegevens niet zijn gemanipuleerd. JWT's zijn de de facto standaard voor staatloze authenticatie in REST API's, single-sign-on-systemen en microservice-autorisatie.

JWT-anatomie: Header · Payload · Signature

Elke JWT bestaat uit drie base64url-gecodeerde segmenten gescheiden door punten. De header en payload zijn gewone JSON — leesbaar voor iedereen — terwijl de signature een cryptografische waarde is die alleen geverifieerd kan worden met de juiste sleutel.

Gecodeerd token

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIiwibmFtZSI6IkFsaWNlIiwicm9sZSI6ImFkbWluIiwiaWF0IjoxNzE3MjAwMDAwLCJleHAiOjE3MTcyMDM2MDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

HeaderPayloadSignature
Header
json
{
  "alg": "HS256",
  "typ": "JWT"
}
Payload
json
{
  "sub":  "user123",
  "name": "Alice",
  "role": "admin",
  "iat":  1717200000,
  "exp":  1717203600
}

Waarom een JWT-decoder gebruiken?

Ruwe JWT's zien eruit als willekeurige tekst. Dit hulpmiddel geeft de header en payload direct weer als geformatteerde JSON, zodat u claims kunt inspecteren, vervaltijden kunt controleren en algoritmerekeuzes kunt controleren zonder één regel code te schrijven.

🔍
Directe claim-inspectie
Bekijk elke claim in de payload — sub, iss, aud, exp, aangepaste rollen, machtigingen — geformatteerd en leesbaar met één klik.
🔓
Geen geheime sleutel nodig
De header en payload zijn openbaar; alleen de signature vereist het geheim. Dit hulpmiddel decodeert beide zonder uw ondertekeningssleutel.
⏱️
Analyse van vervaltijd en tijdstempels
Unix-tijdstempels (exp, iat, nbf) worden automatisch omgezet in leesbare datums zodat u direct kunt zien of een token verlopen is.
🔒
Werkt volledig in uw browser
Alles wordt lokaal verwerkt — er worden geen tokengegevens naar een server verzonden. Veilig te gebruiken met productietokens tijdens het debuggen.

Standaard JWT-claims referentie

RFC 7519 definieert zeven geregistreerde claimnamen. Deze zijn niet verplicht, maar hun gebruik wordt sterk aanbevolen voor interoperabiliteit. U kunt aangepaste claims toevoegen aan de payload.

ClaimBeschrijvingType
issUitgeverIdentificeert wie het token heeft uitgegeven — bijv. de URL van uw auth-server of de applicatienaam.string
subOnderwerpIdentificeert de principal waarover de JWT gaat — doorgaans een gebruikers-ID of serviceaccount.string
audPubliekIdentificeert de beoogde ontvangers. De ontvangende partij moet verifiëren dat dit overeenkomt met hun identifier.string | string[]
expVervaltijdUnix-tijdstempel waarna het token niet meer geaccepteerd mag worden. Stel dit altijd in om schade door een gestolen token te beperken.number
nbfNiet voorUnix-tijdstempel vóór welke het token niet geaccepteerd mag worden. Nuttig voor het plannen van toekomstig gedateerde tokens.number
iatUitgegeven opUnix-tijdstempel waarop het token is uitgegeven. Gebruikt om de leeftijd van het token te berekenen.number
jtiJWT IDEen unieke identifier voor het token. Maakt intrekking mogelijk door gebruikte JTI-waarden server-side op te slaan en te controleren.string

JWT-ondertekeningsalgoritmen

De alg-headerclaim geeft aan welk algoritme het token heeft ondertekend. De keuze beïnvloedt beveiliging, prestaties en of diensten van derden tokens kunnen verifiëren zonder de privésleutel.

AlgoritmeFamilieSleuteltypeOpmerkingen
HS256HMACSymmetricMeest gebruikelijk. Gedeeld geheim — iedereen met het geheim kan ondertekenen en verifiëren.
HS384HMACSymmetricSterkere HMAC-variant; matige prestatiekosten.
HS512HMACSymmetricSterkste HMAC-variant.
RS256RSAAsymmetricMeest gebruikte asymmetrische algoritme (Google, Auth0, Okta). Publieke sleutel verifieert zonder privésleutel.
RS384RSAAsymmetricRS-variant met hogere beveiliging.
RS512RSAAsymmetricSterkste RS-variant.
ES256ECDSAAsymmetricElliptische curve — kortere handtekeningen dan RSA, populair op mobiel en IoT.
PS256RSA-PSSAsymmetricRSA-PSS: moderner en veiliger dan op PKCS1v1.5 gebaseerde RS256.
noneGeen handtekening — kritiek gevaarlijk. Accepteer nooit tokens met alg: none in productie.

Beveiligingsoverwegingen

Een JWT decoderen is altijd veilig. Een JWT vertrouwen zonder goede handtekeningverificatie is dat niet. Houd deze regels in gedachten wanneer u tokens in uw applicatie gebruikt.

Altijd veilig
  • Een JWT decoderen en inspecteren in ontwikkelaarstools of dit hulpmiddel
  • exp, iat en nbf gebruiken om de levensduur van het token te begrijpen
  • Payload-claims loggen voor debugging (gevoelige persoonsgegevens weglaten)
  • De alg-header lezen om te begrijpen hoe het token is ondertekend
Doe dit nooit
  • Claims in de payload vertrouwen zonder de handtekening server-side te verifiëren
  • Tokens accepteren met alg: none — dit betekent helemaal geen handtekening
  • Toegangstokens opslaan in localStorage in toepassingen met hoge beveiliging (geef de voorkeur aan httpOnly-cookies)
  • exp ver in de toekomst instellen voor tokens die gevoelige machtigingen bevatten

Veelvoorkomende gebruiksscenario's

Authenticatiestromen debuggen
Plak een token uit het netwerktabblad van uw browser om claims te inspecteren, ingebedde rollen te controleren en vervaltijd te verifiëren zonder productiecode aan te raken.
Tokens van derden inspecteren
Lees snel tokens van Google, Auth0, Okta of Azure AD om te zien welke claims uw provider bevat en vergelijk ze met uw verwachte schema.
API-ontwikkeling en -testen
Decodeer bij het schrijven of testen van API-eindpunten de autorisatieheader om te bevestigen dat uw token-generatielogica de juiste waarden voor sub, aud en scope instelt.
Microservice-autorisatie
In service-meshes valideert elke service de JWT van de upstream-aanroeper. Decodeer tokens om bij te houden welke service het token heeft uitgegeven en welke machtigingen het beweert te hebben.
Ondersteuning en incidentrespons
Wanneer een gebruiker een authenticatiefout meldt, decodeer dan hun token om te controleren of het verlopen is, of het publiek onjuist is, of dat een vereiste claim ontbreekt.
Beveiligingsaudit
Auditeer JWT-gebruik in services door algoritmerekeuzes, vervaltijdvensters en of gevoelige gegevens per ongeluk zijn opgeslagen in de niet-versleutelde payload te controleren.

JWT decoderen in code

De header en payload zijn base64url-gecodeerd — keer de codering gewoon om. Base64url vervangt + door - en / door _, en laat = opvulling weg. Alleen de signature heeft de geheime sleutel nodig.

JavaScript (browser)
function decodeJWT(token) {
  const [, payload] = token.split('.')
  const json = atob(payload.replace(/-/g, '+').replace(/_/g, '/'))
  return JSON.parse(json)
}
Node.js
const [, payload] = token.split('.')
const decoded = JSON.parse(
  Buffer.from(payload, 'base64url').toString()
)
Python
import base64, json

def decode_jwt(token):
    payload = token.split('.')[1]
    padding = '=' * (-len(payload) % 4)
    return json.loads(base64.urlsafe_b64decode(payload + padding))
CLI (bash + jq)
TOKEN="eyJhbGc..."
echo $TOKEN | cut -d. -f2 | base64 -d 2>/dev/null | jq .

Veelgestelde vragen

Kan ik een JWT decoderen zonder de geheime sleutel?
Ja. De header en payload van een JWT zijn gewoon base64url-gecodeerde JSON — niet versleuteld. Iedereen kan ze decoderen en lezen. Het geheim (of privésleutel voor RS/ES-algoritmen) is alleen nodig om de handtekening te verifiëren, waarmee wordt bevestigd dat het token niet is gemanipuleerd.
Betekent het decoderen van een JWT dat de handtekening is geverifieerd?
Nee. Decoderen leest alleen de claims. Verificatie is een afzonderlijke stap die de cryptografische handtekening controleert met de juiste sleutel. Verifieer altijd de handtekening voordat u claims in uw applicatie vertrouwt.
Wat is het verschil tussen HS256 en RS256?
HS256 gebruikt een enkel symmetrisch geheim dat wordt gedeeld tussen de uitgever en verificateur — iedereen met het geheim kan tokens aanmaken en verifiëren. RS256 gebruikt een asymmetrisch sleutelpaar: de privésleutel ondertekent, de publieke sleutel verifieert. Met RS256 kunt u de publieke sleutel distribueren zodat externe services tokens kunnen verifiëren zonder ze te kunnen vervalsen.
Waarom mislukt base64-decodering soms?
JWT's gebruiken base64url-codering, die - gebruikt in plaats van + en _ in plaats van /, en = opvultekens weglaat. Standaard base64-decoders vereisen + en / en kunnen opvulling vereisen. Voeg de opvulling toe (pad tot een veelvoud van 4 met =) en wissel de tekens uit voordat u handmatig decodeert.
Is het veilig om een productie-JWT in dit hulpmiddel te plakken?
Ja — dit hulpmiddel werkt volledig in uw browser en stuurt geen gegevens naar een server. Let echter op wie uw scherm of browsergeschiedenis kan zien. Decodeer voor zeer gevoelige tokens deze lokaal in uw terminal.
Wat betekent alg: none en is het gevaarlijk?
alg: none betekent dat het token geen cryptografische handtekening heeft — iedereen kan een token aanmaken met willekeurige claims en alg instellen op none. Sommige vroege JWT-bibliotheken accepteerden deze tokens, waardoor een kritieke kwetsbaarheid ontstond. Een veilige JWT-bibliotheek weigert altijd tokens met alg: none, tenzij expliciet anders geconfigureerd. Schakel deze controle nooit uit.