# JWT-Decoder und -Verifizierer

Dekodiere ein JSON Web Token, prüfe Ablauf und Claims und verifiziere die Signatur mit einem Geheimnis oder öffentlichen Schlüssel.

https://codeknife.dev/de/jwt-decoder/

## Was es macht

Dekodiere ein JSON Web Token, um Header und Payload zu lesen, sieh, ob es abgelaufen ist, und verifiziere seine Signatur mit einem Secret oder einem öffentlichen Schlüssel. Das Token wird in deinem Browser dekodiert, diese Seite zeigt keine Werbung, und Token und Schlüssel werden nie geteilt oder gespeichert.

## So geht's

1. Füge das Token ein. Ein `Bearer `-Präfix und Zeilenumbrüche werden ignoriert.
2. Lies die Payload als formatiertes oder kompaktes JSON. Darunter siehst du den Algorithmus, den Status und die Zeiten `exp`, `nbf` und `iat` samt ihrem Abstand zu jetzt.
3. Zum Verifizieren der Signatur gibst du den Schlüssel ein: ein Secret für HS256, HS384 und HS512 oder einen öffentlichen Schlüssel (PEM oder JWK) für RS, PS, ES und EdDSA.
4. Schalte Header und Payload zwischen JSON und Claims um: Claims listet jeden Claim mit seiner Bedeutung und zeigt Zeit-Claims als Datum.
5. Öffne den Tab Kodieren, um Header und Payload zu schreiben und mit einem Geheimnis oder einem privaten Schlüssel (PKCS#8-PEM oder JWK) zu signieren. Nichts auf diesem Tab wird gespeichert, geteilt oder zum Verlauf hinzugefügt.

## Beispiele

```
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
```

Die Payload dieses Tokens:

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

Seine Signatur lässt sich mit dem Secret `your-256-bit-secret` verifizieren.

## Gut zu wissen

- Dekodieren ist nicht Verifizieren: Die Payload ist nur kodiert, nicht verschlüsselt, und jeder kann sie lesen.
- Dein Server muss die Signatur verifizieren, bevor er einem Claim vertraut.
- Ein Token mit dem Algorithmus `none` ist unsigniert, jeder könnte es erstellt haben.
- Behandle aktive Tokens wie Passwörter. Füge hier lieber abgelaufene oder Test-Tokens ein.
- Ein eingefügtes JWKS wird nach der `kid` des Tokens durchsucht, ein einzelnes JWK wird unverändert verwendet. Die Seite lädt nie einen Schlüsselsatz vom Aussteller des Tokens.
- Ein HMAC-Geheimnis, das kürzer als sein Hash ist (32, 48 oder 64 Bytes), lässt sich erraten, deshalb warnt dich die Seite. Ein Geheimnis kann als UTF-8-Text oder als Base64URL gelesen werden.

## Was ist ein JWT?

Ein JSON Web Token besteht aus drei Base64URL-Teilen, durch Punkte verbunden: einem Header mit dem Signaturalgorithmus, einer Payload mit Claims, etwa für wen das Token gilt und wann es abläuft, und einer Signatur. Die ersten beiden Teile kann jeder lesen; nur die Signatur beweist, dass das Token von jemandem mit dem Schlüssel stammt.

## Häufige Fragen

### Ist Dekodieren dasselbe wie Verifizieren?

Nein. Dekodieren liest nur den Inhalt, der nicht verschlüsselt ist. Verifizieren prüft die Signatur mit dem Schlüssel, und dein Server muss das tun, bevor er einem Claim vertraut.

### Was bedeuten exp, nbf und iat?

exp ist der Ablaufzeitpunkt, nbf der Zeitpunkt, vor dem das Token nicht gilt, und iat der Ausstellungszeitpunkt, jeweils in Sekunden seit 1970. Dieses Tool vergleicht sie mit der Uhr deines Geräts.

### Ist es sicher, hier ein echtes Token einzufügen?

Das Token wird in deinem Browser dekodiert und nie an unsere Server gesendet, und diese Seite zeigt keine Werbung. Behandle echte Tokens trotzdem wie Passwörter: Nimm besser abgelaufene oder Test-Tokens.