Wat is een JWT? Structuur, claims en decoderen

Wat is een JWT

Wat is een JWT? Structuur, claims en een privé-decoder | We.Inc

JSON Web Tokens uitgelegd: header, payload en signature, de zeven geregistreerde claims uit RFC 7519, beveiligingsvalkuilen, en een decoder die uw token nergens naartoe stuurt.

Een JWT (JSON Web Token) is een compacte, URL-veilige tekenreeks van drie base64url-delen, gescheiden door punten: een header die het algoritme noemt, een payload met claims zoals sub en exp, en een signature. Iedereen kan de payload decoderen en lezen; alleen de signature, gecontroleerd met de juiste sleutel, bewijst dat niemand iets heeft gewijzigd.

Geregistreerde claimnamen (RFC 7519, sectie 4.1)

Plak een token in de decoder hieronder om de header en payload te zien, met uitleg bij elke geregistreerde claim en elke tijdstempel omgezet in een leesbare datum. Het decoderen gebeurt in de eigen JavaScript van deze pagina, dus het token wordt nooit geüpload. Dat is belangrijk, want een geldig token is een sleutel tot iemands account.

Veelgestelde vragen

Is het veilig om een JWT online te decoderen?

Alleen als het decoderen in uw browser gebeurt. Het token is een inloggegeven: iedereen met een geldig token kan de API als die gebruiker aanroepen totdat het verloopt. De decoder op deze pagina draait lokaal en verstuurt niets, maar voor productietokens is het veiligst om alleen testtokens te decoderen.

Is een JWT versleuteld?

Een normale ondertekende JWT (een JWS) niet. De payload is alleen base64url-gecodeerd, en dat kan iedereen terugdraaien. Versleutelde tokens bestaan als JWE, met vijf door punten gescheiden delen in plaats van drie, maar de meeste login- en API-tokens zijn ondertekend, niet versleuteld.

In welk formaat staan exp en iat?

NumericDate: hele seconden sinds 1970-01-01T00:00:00Z, zonder schrikkelseconden. Date.now() in JavaScript geeft milliseconden terug, dus deel door 1000 voordat u vergelijkt, een heel veelvoorkomende bug.

Moet ik een JWT in localStorage of in een cookie bewaren?

Elk script dat op de pagina draait kan localStorage lezen, dus één cross-site scripting-bug kan het token stelen. Een HttpOnly, Secure, SameSite cookie houdt het weg van scripts, ten koste van het afhandelen van CSRF. Veel teams kiezen de cookie voor browsersessies.

Kan ik een gebruiker uitloggen met een JWT?

Niet met het token alleen, want het blijft geldig tot exp. Gebruik een korte geldigheid plus refresh tokens die u kunt intrekken, of houd een blokkeerlijst bij van jti-waarden voor tokens die eerder ongeldig moeten worden.

De drie delen

Ondertekeningsalgoritmen

Valkuilen die nog steeds tot lekken leiden

Decoderen en verifiëren in code

Een payload decoderen in gewone JavaScript

Leest de claims zonder ze te verifiëren. Prima om een gebruikersnaam in de UI te tonen, nooit om over toegang te beslissen.

Verifiëren op de server met jose

jwtVerify controleert de signature, exp en nbf, en met deze opties ook de issuer, de audience en het toegestane algoritme.

Privé JWT-decoder

Plak een token om de header en payload te lezen. Het decoderen draait in uw browser; het token wordt niet verstuurd, opgeslagen of gelogd.

Wie het token heeft uitgegeven

Over wie het token gaat, meestal een gebruikers-id

Welke ontvangers het moeten accepteren

Afwijzen op of na dit tijdstip

Afwijzen vóór dit tijdstip

Wanneer het token is aangemaakt

Een unieke id, handig om hergebruik te blokkeren

JWT

Voorbeeldtoken laden

Wissen

Header

Payload

Signature (hier niet geverifieerd)

Claims uitgelegd

Claim

Waarde

Betekenis

Eigen claim

Een ondertekende JWT heeft 3 delen gescheiden door punten; deze heeft er {n}.

5 delen betekent een versleutelde JWE, die zonder de sleutel niet te lezen is.

Deel {n} is geen geldige base64url-JSON.

Verlopen {v}

Geldig tot {v}

Niet geldig tot {v}

alg is none: dit token heeft geen signature en moet worden afgewezen.

Lokaal gedecodeerd. Niets verlaat deze pagina.

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap