UltKit

JWT-Decoder

Fügen Sie ein JSON Web Token ein und lesen Sie Header und Payload als formatiertes JSON. Ablauf- und Ausstellungszeit werden als Datum angezeigt, dazu ein Hinweis, ob das Token gerade gültig ist. Die Dekodierung läuft vollständig in Ihrem Browser. Das ist wichtig, wenn das Token ein aktiver Zugangsnachweis ist.

0 Zeichen · 0 Wörter · 0 Zeilen

0 Zeichen · 0 Wörter · 0 Zeilen

Läuft komplett in diesem Browser-Tab. Ihr Text wird weder hochgeladen noch gespeichert.

Registrierte Claims

Die sieben in RFC 7519 §4.1 definierten Claim-Namen. Alle sind optional; Zeitangaben sind Sekunden seit 1970-01-01 UTC.

ClaimBedeutung
issIssuer: wer das Token erstellt und signiert hat
subSubject: der Benutzer oder die Entität, um die es im Token geht
audAudience: für wen das Token bestimmt ist
expExpiration Time: Token nach diesem Zeitpunkt ablehnen
nbfNot Before: Token vor diesem Zeitpunkt ablehnen
iatIssued At: wann das Token erstellt wurde
jtiJWT ID: eindeutige Kennung, verhindert Replay

Gängige alg-Werte

alg-WertBedeutung
HS256HMAC mit SHA-256; ein gemeinsames Geheimnis signiert und prüft
RS256RSA-PKCS#1-v1.5-Signatur mit SHA-256; privater Schlüssel signiert, öffentlicher prüft
PS256RSA-PSS mit SHA-256
ES256ECDSA auf der Kurve P-256 mit SHA-256; kurze Signaturen
EdDSAEd25519- oder Ed448-Signaturen
noneUnsigniertes Token; Server sollten es ablehnen

Aufbau eines JSON Web Tokens

JWT ist in RFC 7519 (Mai 2015) definiert; dort wird empfohlen, es wie das englische Wort „jot“ auszusprechen. Die übliche signierte Form besteht aus drei Base64url-Zeichenfolgen, die durch Punkte verbunden sind: header.payload.signature. Der Header nennt in alg den Signaturalgorithmus, etwa HS256 oder RS256, und häufig in kid eine Schlüssel-ID. Die Payload enthält Claims, also JSON-Felder wie sub (der Benutzer), iss (der Aussteller), aud (die vorgesehene Zielgruppe) sowie exp, nbf und iat; das sind Zeitangaben in Sekunden seit dem 1. Januar 1970 UTC. Der Decoder rechnet diese drei in Ihre lokale Zeit und in ISO 8601 um und zeigt Ihnen, ob das Token abgelaufen, noch nicht gültig oder innerhalb seines Gültigkeitsfensters ist.

Base64url ist eine Kodierung, keine Verschlüsselung. Jeder, der ein Token besitzt, kann die Payload genauso lesen, wie diese Seite es tut. Legen Sie deshalb niemals Passwörter, Kartennummern oder andere Geheimnisse in Claims ab. Ein Token mit fünf durch Punkte getrennten Teilen ist ein JWE, also ein verschlüsseltes Token; sein Inhalt ist ohne den Schlüssel nicht lesbar, und der Decoder weist darauf hin. Ein vorangestelltes „Bearer “, das Sie aus einem Authorization-Header kopiert haben, wird automatisch entfernt.

Warum die Signatur hier nicht geprüft wird

Die Signatur belegt, dass Header und Payload von jemandem mit dem Schlüssel erzeugt und seitdem nicht verändert wurden. Für die Prüfung brauchen Sie diesen Schlüssel: das gemeinsame Geheimnis bei HMAC-Algorithmen wie HS256 oder den öffentlichen Schlüssel des Ausstellers bei RS256, ES256 oder EdDSA. Ein produktives Signaturgeheimnis in eine beliebige Webseite einzufügen, ist keine gute Idee, und ein Decoder, der ohne Schlüssel die Echtheit eines Tokens zusichert, würde falsche Sicherheit vermitteln. Dieses Tool zeigt die Signatur daher an, prüft sie aber nicht. Betrachten Sie das Angezeigte als Behauptung des Tokens, nicht als Tatsache.

Die Prüfung gehört auf Ihren Server, mit einer gepflegten Bibliothek und festgelegtem, erwartetem Algorithmus. Zwei historische Fehler zeigen, warum: die Annahme von alg „none“, womit jeder ein unsigniertes Token fälschen kann, und die Algorithmenverwechslung, bei der ein Server, der RS256 erwartet, dazu gebracht wird, eine HS256-Signatur zu prüfen und den öffentlichen Schlüssel als HMAC-Geheimnis zu verwenden. Ein Decoder dient der Fehlersuche: Sie sehen, welche Claims ein Anbieter ausstellt, erkennen eine falsche Audience oder finden heraus, dass eine Sitzung scheiterte, weil exp vor einer Minute abgelaufen ist. Um die Base64url-Segmente roh zu lesen, nutzen Sie den Base64-Decoder.

Häufig gestellte Fragen

Ist es sicher, ein echtes Access-Token in einen JWT-Decoder einzufügen?
Auf dieser Seite verlässt das Token Ihren Browser nie. Dennoch funktioniert ein gültiges Token bis zu seinem Ablauf wie ein Passwort. Verwenden Sie daher möglichst abgelaufene oder Test-Tokens und halten Sie aktive Tokens aus Screenshots und Chats heraus.
Warum wird mein Token als abgelaufen angezeigt, obwohl es gerade erst ausgestellt wurde?
Prüfen Sie zuerst die Uhr Ihres Geräts. Manche Aussteller vergeben Access-Tokens nur wenige Minuten Lebensdauer, und ein aus einem Log kopiertes Token kann älter sein, als es aussieht. Ein exp in Millisekunden statt in Sekunden bewirkt das Gegenteil und liegt tausende Jahre in der Zukunft.
Kann jemand die Payload meines JWT verändern?
Sie können es bearbeiten und neu kodieren, aber die Signatur passt dann nicht mehr. Ein Server, der Signaturen mit dem richtigen Schlüssel und Algorithmus prüft, lehnt das veränderte Token ab.
Was ist der Unterschied zwischen JWS und JWE?
Ein JWS (RFC 7515) ist signiert, hat drei Teile und kann von jedem gelesen werden. Ein JWE (RFC 7516) ist verschlüsselt, hat fünf Teile, und nur der Schlüsselinhaber kann die Payload lesen.
Macht ein Logout ein JWT ungültig?
Nicht von selbst. Ein signiertes JWT bleibt bis exp gültig, sofern der Server keine Sperrliste führt oder einen Sitzungseintrag prüft. Deshalb erhalten Access-Tokens meist kurze Lebensdauern.