Sprache: Deutsch

tools / jwt

jwt/

Header und Payload eines JWT dekodieren und exp / iat / nbf als lokale Zeit anzeigen. Nur Dekodierung, keine Signaturprüfung.

Es wird nur dekodiert, die Signatur wird nicht geprüft. Eine erfolgreiche Dekodierung bedeutet nicht, dass dem Token vertraut werden kann.

Token

Zeiten

Header

Payload


        

Signature

Rohdaten (base64url), nicht geprüft

      

Häufige Fragen

Kann ich dem dekodierten Inhalt vertrauen? Prüft das Tool die Signatur?

Nein. Das Tool dekodiert nur Header und Payload und prüft die Signatur nie, eine erfolgreiche Dekodierung heißt also nicht, dass das Token echt oder unverändert ist. Zur Signaturprüfung braucht man den geheimen oder öffentlichen Schlüssel; sie gehört mit einer JWT-Bibliothek in dein Backend. Außerdem ist der Payload nur base64url-kodiert, nicht verschlüsselt: Jeder, der das Token hat, kann ihn lesen. Speichere darin keine Passwörter oder andere sensible Daten.

Was bedeuten „Falsche Anzahl an Teilen“ und „Das ist ein JWE“?

Ein JWT besteht aus drei Teilen, header.payload.signature, die durch Punkte verbunden sind; bei jeder anderen Anzahl erscheint die Meldung zur falschen Anzahl an Teilen. Häufige Ursachen sind eine unvollständige Kopie, zusätzlich mitkopierter Text oder etwas, das gar kein JWT ist, etwa eine Session-ID oder ein undurchsichtiges Zufallstoken. Ein Token mit genau 5 Teilen ist ein JWE, dessen Inhalt verschlüsselt ist und sich hier nicht dekodieren lässt.

Was tun bei „kein gültiges base64url“ oder „ungültige Länge“?

Das heißt, ein Teil enthält ein Zeichen, das nicht in ein JWT gehört, oder wurde abgeschnitten. Die Meldung nennt den Teil und bei einem ungültigen Zeichen auch, welches es ist. JWT verwendet base64url mit nur Buchstaben, Ziffern, - und _; ein abschließendes = ist optional. Am häufigsten steht ein Anführungszeichen am Anfang des Tokens; ein + oder / bedeutet, dass normales Base64 verwendet wurde und durch - und _ ersetzt werden muss. Eine abgeschnittene Kopie führt meist zu „ungültige Länge“ oder „kein gültiges JSON“.

Kann ich ein Token mit Bearer-Präfix oder Zeilenumbrüchen direkt einfügen?

Ja. Ein führendes Bearer wird automatisch entfernt (ohne Beachtung der Groß-/Kleinschreibung), Leerzeichen, Zeilenumbrüche und Tabulatoren im Token werden ignoriert, ein aus einem Request-Header oder Log kopiertes Token lässt sich also unverändert einfügen. Eingaben über 1 MB werden direkt abgelehnt; ein echtes JWT hat meist wenige hundert Byte bis einige KB.

Was bedeuten die Anzeigen „Abgelaufen“, „Noch nicht gültig“ und „In der Zukunft“?

Sie stammen aus drei Zeitfeldern im Payload. exp ist der Ablaufzeitpunkt, nach dessen Überschreiten „Abgelaufen“ erscheint; nbf ist der Beginn der Gültigkeit, davor erscheint „Noch nicht gültig“; iat ist der Ausstellungszeitpunkt, und „In der Zukunft“ bedeutet, dass er später als jetzt liegt – das kann auf unterschiedlich gehende Uhren von Aussteller und deinem Computer hindeuten. Die Zeile „Status“ ganz oben prüft zuerst nbf, dann exp und zeigt „Gültig“ nur, wenn beides stimmt; das bezieht sich nur auf die Zeit und sagt nichts über die Signatur.

Die Zeiten weichen um einige Stunden ab, oder die Restzeit wirkt falsch. Woran liegt das?

Die Seite verwendet Zeitzone und Uhr deines Computers, und die Zeitzone steht hinter jedem Datum, zum Beispiel UTC+08:00. exp, iat und nbf sind Unix-Zeitstempel in Sekunden und hängen nicht von der Zeitzone ab; eine andere Zone ändert nur die Darstellung desselben Zeitpunkts. Die Restzeit wird jede Sekunde aktualisiert und aus der aktuellen Zeit deines Computers berechnet, eine falsch gehende Uhr liefert also falsche Ergebnisse. Bei einem sehr großen Wert, etwa einem 13-stelligen Zeitstempel in Millisekunden, erscheint der Hinweis, dass JWT Sekunden verwendet; andere Zeitfelder wie auth_time werden nicht automatisch umgerechnet.

Kann das Tool Token dekodieren, die mit HS256, RS256, ES256 oder anderen Algorithmen signiert sind?

Ja, alle. Beim Dekodieren werden nur die ersten beiden Teile wieder in JSON umgewandelt, das hat mit dem Signaturalgorithmus nichts zu tun. Das alg aus dem Header steht neben dem Titel, und bei alg none erscheint der Vermerk „ohne Signatur“. Der Signature-Teil wird als ursprünglicher base64url-Text angezeigt und nicht dekodiert.

Wird das eingefügte Token hochgeladen?

Nein. Die Dekodierung läuft in deinem Browser, und die Seite sendet das Token nirgendwohin. Ein Token ist aber oft gleichbedeutend mit einem Zugangsdatum, gib also ein noch gültiges Live-Token nicht leichtfertig weiter und füge es nicht auf Websites ein, die du nicht kennst.