Ü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.