Anleitung
- Fügen Sie das vollständige Token in das Feld „Kodiertes Token“ ein: drei durch Punkte getrennte Base64URL-Teile.
- Lesen Sie den dekodierten Header und die Payload. Die Claims exp, iat und nbf werden als Datum angezeigt, mit einer Warnung, wenn das Token abgelaufen oder noch nicht gültig ist.
- Um die Signatur zu prüfen, öffnen Sie „Signatur prüfen“ und geben für HS256, HS384 oder HS512 den gemeinsamen geheimen Schlüssel ein oder fügen für RS-, PS- oder ES-Algorithmen den öffentlichen Schlüssel im PEM-Format ein.
- Prüfen Sie, ob die Claims für Aussteller, Zielgruppe und Subjekt den Erwartungen Ihrer Anwendung entsprechen.
Wie ein JWT aufgebaut ist
Ein JSON Web Token (RFC 7519) besteht aus drei durch Punkte getrennten Teilen: header.payload.signature. Header und Payload sind JSON-Objekte, die als Base64URL ohne Auffüllung kodiert sind. Deshalb beginnen Token fast immer mit eyJ, der kodierten Form eines öffnenden {". Die Signatur wird über die ersten beiden Teile berechnet, und zwar genau in der Form, in der sie im Token stehen.
- Header: der Signaturalgorithmus in
alg, meist"typ": "JWT"und oft einekid, die den Schlüssel benennt. - Payload: die Claims, etwa wer der Benutzer ist, wer das Token ausgestellt hat und wann es abläuft.
- Signatur: eine HMAC-, RSA- oder ECDSA-Signatur, die belegt, dass Header und Payload nicht verändert wurden.
Ein Token mit fünf Teilen ist ein verschlüsseltes JWE; sein Inhalt lässt sich ohne den Entschlüsselungsschlüssel nicht lesen.
Registrierte Claims
| Claim | Name | Bedeutung |
|---|---|---|
iss | Issuer (Aussteller) | Wer das Token erstellt und signiert hat |
sub | Subject (Subjekt) | Wen das Token betrifft, meist eine Benutzer-ID |
aud | Audience (Zielgruppe) | Der Dienst, für den das Token bestimmt ist |
exp | Expiration Time (Ablaufzeit) | Ab diesem Zeitpunkt muss das Token abgelehnt werden |
nbf | Not Before (nicht vor) | Vor diesem Zeitpunkt muss das Token abgelehnt werden |
iat | Issued At (ausgestellt am) | Wann das Token erstellt wurde |
jti | JWT ID | Eindeutige Kennung, dient zum Erkennen von Replay-Angriffen |
Zeitangaben sind NumericDate-Werte: Sekunden seit dem 1. Januar 1970 UTC, keine Millisekunden. Der Decoder zeigt sie als lesbares Datum an und vergleicht sie mit der Uhr Ihres Geräts.
Dekodieren ist nicht Verifizieren
Jeder kann ein JWT dekodieren, denn die Payload ist nur kodiert, nicht verschlüsselt; legen Sie darin also niemals Passwörter oder andere Geheimnisse ab. Vertrauen entsteht erst durch die Prüfung der Signatur mit dem richtigen Schlüssel. Ein Server, der Token akzeptiert, sollte außerdem:
- nur den erwarteten Algorithmus zulassen und
"alg": "none"ablehnen, das ein unsigniertes Token kennzeichnet; - niemals den Token-Header zwischen HMAC und RSA wählen lassen, sonst kann ein Angreifer ein gefälschtes Token signieren, indem er Ihren öffentlichen Schlüssel als HMAC-Geheimnis verwendet;
exp,nbf,issundaudbei jeder Anfrage prüfen.
Die optionale Prüfung auf dieser Seite nutzt die in Ihren Browser integrierte Web Crypto API. Dekodierung und Prüfung finden auf Ihrem Gerät statt, und es wird nichts hochgeladen. Grundsätzlich gilt: Fügen Sie produktive Signaturschlüssel oder aktive Token niemals in Websites ein, denen Sie nicht vertrauen.
Häufig gestellte Fragen
Ist es sicher, ein JWT in diesen Decoder einzufügen?
Das Token wird per JavaScript in Ihrem Browser dekodiert und geprüft und niemals an einen Server gesendet. Bedenken Sie aber, dass ein noch nicht abgelaufenes Token für jeden, der es besitzt, wie ein Passwort funktioniert. Verwenden Sie daher lieber Test- oder abgelaufene Token, wenn Sie Screenshots oder Logs teilen.
Kann ich ein JWT ohne den geheimen Schlüssel dekodieren?
Ja. Header und Payload sind einfaches Base64URL-kodiertes JSON und lassen sich ohne jeden Schlüssel lesen. Der geheime oder öffentliche Schlüssel wird nur zum Prüfen der Signatur benötigt.
Warum meldet der Decoder, dass mein Token abgelaufen ist?
exp liegt vor der aktuellen Uhrzeit Ihres Geräts. Falls das Token noch gültig sein sollte, prüfen Sie Ihre Systemuhr und die vom Aussteller konfigurierte Gültigkeitsdauer des Tokens.Welche Signaturalgorithmen können geprüft werden?
HS256, HS384 und HS512 mit einem gemeinsamen geheimen Schlüssel sowie RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384 und ES512 mit einem öffentlichen Schlüssel im PEM-Format.
Was bedeutet "alg": "none"?
Es kennzeichnet ein ungesichertes JWT mit leerer Signatur, wie in RFC 7518 definiert. Jeder kann ein solches Token erstellen oder verändern, daher muss ein Server, der signierte Token erwartet, es immer ablehnen.