JWT dekodieren und erstellen
Füge ein JSON Web Token ein, um Header und Claims zu lesen, das Ablaufdatum zu sehen und die Signatur zu prüfen. Dein Token verlässt diese Seite nicht.
Diesen Rechner auf Ihrer Website einbinden
Kopieren Sie den Code in das HTML Ihrer Seite. Kostenlos – bitte lassen Sie den Quellenlink stehen.
So ist ein JWT aufgebaut
Ein JSON Web Token (RFC 7519) besteht aus drei Base64URL-Strings, getrennt durch Punkte: header.payload.signatur. Der Header nennt den Signaturalgorithmus, die Payload enthält die Claims (Benutzer-ID, Rollen, Ablauf) und die Signatur wird über die ersten beiden Teile berechnet.
Bei HS256 ist die Signatur ein HMAC mit einem gemeinsamen Secret, dasselbe Secret signiert und prüft. RS256, PS256 und ES256 signieren mit einem privaten und prüfen mit einem öffentlichen Schlüssel, so können viele Dienste Tokens prüfen, ohne sie erstellen zu können.
Tokens sicher prüfen
- Signatur immer auf dem Server prüfen und alg "none" ablehnen.
- Den erwarteten Algorithmus festlegen, statt ihn vom Header wählen zu lassen.
- exp, nbf, iss und aud prüfen, mit ein bis zwei Minuten Toleranz für Uhrabweichungen.
- Tokens kurzlebig halten und wie Passwörter behandeln: Dieser Decoder läuft offline, viele andere senden das Token an einen Server.
Registrierte JWT-Claims (RFC 7519)
| Claim | Name | Bedeutung |
|---|---|---|
iss | Aussteller | Wer das Token erstellt und signiert hat |
sub | Subjekt | Wen das Token betrifft, meist eine Benutzer-ID |
aud | Empfänger | Für wen das Token bestimmt ist |
exp | Ablaufzeit | Sekunden seit 1970, ab denen es abgelehnt werden muss |
nbf | Nicht vor | Sekunden seit 1970, vor denen es abgelehnt werden muss |
iat | Ausgestellt | Wann es erstellt wurde |
jti | JWT-ID | Eindeutige ID gegen Wiederverwendung |
Häufige Fragen
Kann jeder ein JWT lesen?
Ja. Header und Payload sind nur Base64URL-kodiert, nicht verschlüsselt. Wer das Token hat, kann sie lesen. Passwörter oder Geheimnisse gehören nie in die Payload.
Prüft das Dekodieren, ob das JWT gültig ist?
Nein. Dekodieren liest nur den Inhalt. Erst die Signaturprüfung mit dem richtigen Secret oder öffentlichen Schlüssel beweist, dass es nicht gefälscht oder verändert wurde, und der Server muss zusätzlich exp, nbf und aud prüfen.
Warum ist mein Token abgelaufen, obwohl es gerade erst ausgestellt wurde?
exp, iat und nbf sind Sekunden seit 1970, keine Millisekunden. Wird Date.now() aus JavaScript ohne Division durch 1000 verwendet, liegt das Datum Jahrtausende in der Zukunft, und Uhrabweichungen zwischen Servern lassen ein frisches Token abgelaufen oder noch nicht gültig wirken.
Wird das Eingefügte an einen Server gesendet?
Nein. Das Tool läuft komplett in deinem Browser, mit JavaScript und der eingebauten Web-Crypto-API. Nichts, was du eingibst, einfügst oder öffnest, wird hochgeladen oder gespeichert.