JWT-Decoder
JWT-Header und -Payload lokal dekodieren. Die Signatur wird nicht geprüft.
So funktioniert es
Ein JSON Web Token (JWT, RFC 7519) besteht meist aus drei durch Punkte getrennten Teilen: einem Header, einem Payload und einer Signatur. Die ersten beiden sind JSON, kodiert in Base64URL, einer Variante von Base64, die in URLs sicher ist und in JWTs ohne das Füllzeichen = geschrieben wird. Fügen Sie ein Token ein, und die Schaltfläche „Dekodieren“ zeigt Header und Payload als eingerücktes JSON an. Die Signatur wird nicht dekodiert: Sie besteht aus Binärdaten, nicht aus JSON.
Der Header nennt den Algorithmus (alg): HS256 verwendet einen gemeinsamen geheimen Schlüssel (per HMAC), während RS256 und ES256 Signaturen sind, die mit einem privaten Schlüssel erstellt und mit dem passenden öffentlichen Schlüssel geprüft werden. Der Payload enthält die Claims; zu den Standard-Claims gehören iss (Aussteller), sub (Subjekt), aud (Empfänger), exp (Ablaufzeit), nbf (nicht gültig vor), iat (Ausstellungszeitpunkt) und jti (Token-ID).
exp, nbf und iat sind Unix-Zeitstempel in Sekunden. Dieses Werkzeug zeigt sie als Zahlen an; um einen davon als Datum zu lesen, fügen Sie ihn in den Unix-Zeitstempel-Konverter ein.
Dekodieren ist keine Verifizierung. Jeder kann ein Token mit beliebigem Payload erstellen; ein dekodiertes Token beweist also so lange nichts, bis die Anwendung, die es empfängt, die Signatur mit dem richtigen Schlüssel prüft, nur die erwarteten Algorithmen akzeptiert und exp und nbf prüft. Ein Token, dessen alg auf none gesetzt ist, hat überhaupt keine Signatur und sollte abgelehnt werden, sofern das nicht ausdrücklich so gewollt ist.
Base64URL ist eine Kodierung, keine Verschlüsselung: Jeder, der ein Token hat, kann seinen Payload lesen; deshalb gehören Passwörter und andere Geheimnisse nicht hinein. Verschlüsselte Tokens (JWE) haben fünf Teile und lassen sich ohne den Schlüssel nicht lesen; dieses Werkzeug lehnt sie daher ab. Das Dekodieren geschieht in Ihrem Browser; das Token wird nirgendwohin gesendet.
Beispiel
Dekodiert ein Demonstrationstoken. Das Lesen von Header und Inhalt prüft keine Signatur und bestätigt keine Echtheit.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMifQ.signatureHeader {"alg": "HS256", "typ": "JWT"} und Payload {"sub": "123"}.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiQW5hIiwiaWF0IjoxNzA0MDY3MjAwLCJleHAiOjE3MDQwNzA4MDB9.signaturePayload mit iat 1704067200 und exp 1704070800: ausgestellt am 1. Januar 2024 um Mitternacht UTC und eine Stunde lang gültig.eyJhbGciOiJub25lIn0.eyJzdWIiOiIxMjMifQ.Header {"alg": "none"} und eine leere Signatur: ein unsigniertes Token, das ein Server normalerweise ablehnen sollte.
Häufige Fragen
Ist es sicher, ein Produktiv-Token einzufügen?
Die Verarbeitung erfolgt lokal, aber Tokens können sensible Daten enthalten. Verwenden Sie lieber ein geschwärztes oder abgelaufenes Token, und geben Sie niemals einen geheimen Signaturschlüssel weiter.
Kann mir dieses Werkzeug sagen, ob ein Token gültig ist?
Nein. Es prüft weder die Signatur noch den Ablauf noch den Aussteller. Zum Verifizieren eines Tokens braucht man den gemeinsamen geheimen Schlüssel (HS256) oder den öffentlichen Schlüssel des Ausstellers (RS256, ES256), und das ist Aufgabe der Anwendung, die das Token annimmt.
Warum ist der Payload lesbar, obwohl das Token signiert ist?
Eine Signatur schützt vor Änderungen, nicht vor dem Lesen. Der Payload ist nur Base64URL-kodiert und damit für jeden lesbar, der das Token sieht.
Warum erhalte ich eine Fehlermeldung?
Der Text ist kein Token, dessen erste zwei Teile sich zu JSON dekodieren lassen. Prüfen Sie, ob das ganze Token kopiert wurde, ohne das Wort Bearer und ohne umschließende Anführungszeichen, und dass es sich nicht um ein verschlüsseltes JWE handelt.