# JWT-decoder en -verifier

Decodeer een JSON Web Token, controleer de geldigheid en claims en verifieer de handtekening met een geheim of publieke sleutel.

https://codeknife.dev/nl/jwt-decoderen/

## Wat het doet

Decodeer een JSON Web Token om de header en payload te lezen, zie of het verlopen is en verifieer de handtekening met een geheim of een publieke sleutel. Het token wordt in je browser gedecodeerd, deze pagina toont geen advertenties en het token en de sleutel worden nooit gedeeld of opgeslagen.

## Zo gebruik je het

1. Plak het token. Een `Bearer `-voorvoegsel en regeleinden worden genegeerd.
2. Lees de payload als opgemaakte of compacte JSON. Eronder zie je het algoritme, de status en de tijden `exp`, `nbf` en `iat`, naast hoe ver ze van nu af liggen.
3. Voer de sleutel in om de handtekening te verifiëren: een geheim voor HS256, HS384 en HS512, of een publieke sleutel (PEM of JWK) voor RS, PS, ES en EdDSA.
4. Schakel de header en de payload om tussen JSON en Claims: Claims toont elke claim met wat hij betekent en laat tijdclaims als datum zien.
5. Open het tabblad Coderen om een header en payload te schrijven en te ondertekenen met een geheim of een privésleutel (PKCS#8-PEM of JWK). Niets op dat tabblad wordt opgeslagen, gedeeld of aan de geschiedenis toegevoegd.

## Voorbeelden

```
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
```

De payload van dat token:

```json
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}
```

De handtekening wordt geverifieerd met het geheim `your-256-bit-secret`.

## Goed om te weten

- Decoderen is niet verifiëren: de payload is alleen gecodeerd, niet versleuteld, en iedereen kan hem lezen.
- Je server moet de handtekening verifiëren voordat hij een claim vertrouwt.
- Een token met het algoritme `none` is niet ondertekend, dus iedereen kan het gemaakt hebben.
- Behandel echte tokens als wachtwoorden. Gebruik liever verlopen of testtokens als je er hier een plakt.
- Een geplakte JWKS wordt doorzocht op de `kid` van het token, en een enkele JWK wordt gebruikt zoals hij is. De pagina haalt nooit een sleutelset op bij de uitgever van het token.
- Een HMAC-geheim dat korter is dan zijn hash (32, 48 of 64 bytes) is te raden, dus de pagina waarschuwt je. Een geheim kan als UTF-8-tekst of als Base64URL worden gelezen.

## Wat is een JWT?

Een JSON Web Token bestaat uit drie Base64URL-delen met punten ertussen: een header met het ondertekeningsalgoritme, een payload met claims zoals voor wie het token is en wanneer het verloopt, en een handtekening. Iedereen kan de eerste twee delen lezen; alleen de handtekening bewijst dat het token komt van iemand met de sleutel.

## Veelgestelde vragen

### Is een token decoderen hetzelfde als verifiëren?

Nee. Decoderen leest alleen de inhoud, die niet versleuteld is. Verifiëren controleert de handtekening met de sleutel, en je server moet dat doen voordat die een claim vertrouwt.

### Wat betekenen exp, nbf en iat?

exp is wanneer het token verloopt, nbf het moment vóór welk het niet geldig is en iat wanneer het is uitgegeven, allemaal in seconden sinds 1970. Deze tool vergelijkt ze met de klok van je apparaat.

### Is het veilig om hier een echt token te plakken?

Het token wordt in je browser gedecodeerd en nooit naar onze servers gestuurd, en deze pagina toont geen advertenties. Behandel echte tokens toch als wachtwoorden: gebruik liever verlopen of testtokens.