MiServe DevTools

Ihre Sticker

Heften Sie hier Tools an. Sie werden in diesem Browser gespeichert.

JWT dekodieren, verifizieren und signieren

Dekodieren Sie ein JSON Web Token, lesen Sie seine Claims und die Ablaufzeit, verifizieren Sie die Signatur mit einem Secret oder einem öffentlichen Schlüssel und signieren Sie HMAC-Tokens.

Läuft in Ihrem Browser. Nichts, was Sie einfügen, wird hochgeladen.

Über dieses Tool

Was ein JWT ist

Ein signiertes JSON Web Token (RFC 7519) besteht aus drei Base64URL-Strings, die durch Punkte verbunden sind: Header, Payload und Signatur. Der Header gibt an, wie das Token signiert ist (alg). Der Payload ist ein JSON-Objekt aus Claims, also Aussagen darüber, wen das Token betrifft (sub), wer es ausgestellt hat (iss) und wann es abläuft (exp). Die Signatur wird über die ersten beiden Teile berechnet.

Dekodieren ist nicht Verifizieren. Header und Payload sind nur kodiert, nicht verschlüsselt: Jeder, der ein Token besitzt, kann es lesen, so wie diese Seite ganz ohne Schlüssel, und jeder kann ein Token mit beliebigen Claims schreiben. Legen Sie niemals ein Geheimnis im Payload eines JWT ab, und vertrauen Sie keinem Claim, bevor die Signatur verifiziert ist.

Die Signatur verifizieren

HS256, HS384 und HS512 sind HMACs: Dasselbe Secret signiert und verifiziert, wer also verifizieren kann, kann auch fälschen. RS256, PS256 und ES256 sowie ihre Varianten mit 384 und 512 sind asymmetrisch: Der Aussteller signiert mit einem privaten Schlüssel, und Sie verifizieren mit dem öffentlichen Schlüssel, der oft als JWK Set unter der jwks_uri des Ausstellers veröffentlicht ist.

Fügen Sie das Secret ein oder den öffentlichen Schlüssel als PEM, als X.509-Zertifikat oder als JWK. Die Prüfung übernimmt die Web Crypto API Ihres Browsers. Das Ergebnis ist eines von dreien: Die Signatur ist gültig, sie ist ungültig, oder sie konnte nicht geprüft werden. Im letzten Fall nennt die Seite den Grund: Es fehlt ein Schlüssel, der Schlüssel hat den falschen Typ oder die falsche Kurve, der Algorithmus wird nicht unterstützt, oder der Header enthält "alg": "none", das Token ist also gar nicht signiert.

Eine gültige Signatur ist notwendig, aber nicht ausreichend. Ein echter Dienst muss außerdem Ablaufzeit, Aussteller und Zielgruppe prüfen und selbst festlegen, welchen Algorithmus er akzeptiert, statt dem Header des Tokens zu glauben.

Zeitangaben, Beispiel-Token und Signieren

exp, nbf und iat sind Unix-Zeitstempel in Sekunden. Die Claims-Tabelle zeigt sie als Datum in Ihrer Zeitzone, und das Badge darüber zeigt nach der Uhr Ihres Geräts an, ob das Token abgelaufen ist, noch nicht gültig ist oder wie lange es noch gültig bleibt.

Die Seite öffnet sich mit einem Beispiel-Token, das in Ihrem Browser erzeugt wird, jetzt ausgestellt und eine Stunde gültig ist. Es ist mit HS256 und dem Beispiel-Secret devtools-sample-secret-not-for-production signiert, deshalb lässt es sich verifizieren. Dieses Secret ist öffentlich: Verwenden Sie es für nichts Echtes.

Signieren erzeugt ein Token aus dem Header und dem Payload, die Sie bearbeiten, und einem HMAC-Secret. Verwenden Sie es für Tests und die lokale Entwicklung. Tokens, Secrets und Schlüssel, die Sie eingeben, bleiben in diesem Tab: Nichts wird gesendet, gespeichert oder protokolliert.

Fragen

Ist es sicher, ein JWT hier einzufügen?

Das Token wird von JavaScript in Ihrem Browser dekodiert und verifiziert und nicht an einen Server gesendet. Trotzdem ist ein noch nicht abgelaufenes Token ein funktionierender Zugangsnachweis. Seien Sie also bei jedem Tool vorsichtig, das danach fragt, und verwenden Sie lieber abgelaufene oder Test-Tokens.

Kann jeder den Inhalt eines JWT lesen?

Ja. Header und Payload sind Base64URL-kodiertes JSON, nicht verschlüsselt, daher kann jeder, der das Token hat, sie ohne Schlüssel lesen. Die Signatur verbirgt nichts: Sie zeigt nur, dass das Token von jemandem erstellt wurde, der den Signaturschlüssel besitzt, und dass es danach nicht verändert wurde.

Was ist der Unterschied zwischen HS256 und RS256?

HS256 verwendet ein gemeinsames Secret zum Signieren und Verifizieren, daher könnte jede Partei, die verifiziert, auch Tokens erstellen. RS256 signiert mit einem privaten Schlüssel und verifiziert mit einem öffentlichen Schlüssel, sodass viele Dienste Tokens verifizieren können, die nur der Aussteller erstellen kann.

Warum wird mein Token als abgelaufen angezeigt?

Sein exp-Claim liegt nach der Uhr Ihres Geräts in der Vergangenheit. Manche Server tolerieren eine kleine Zeitabweichung, aber ein abgelaufenes Token muss ersetzt werden, durch eine erneute Anmeldung oder mit einem Refresh-Token.

Weitere Tools in Kodierung