SuperDevTools

JWT dekodieren und prüfen

Vorsicht mit echten Tokens

Fügen Sie kein noch gültiges Produktions-Token auf einer Website ein, die Sie nicht kennen: Wer es liest, kann es bis zum Ablauf verwenden. Hier laufen Dekodierung, Prüfung und Erstellung vollständig in Ihrem Browser: Nichts wird gesendet, kein Token und kein Secret wird gespeichert.

Fügen Sie das ganze Token ein (drei durch Punkte getrennte Teile). Ein vorangestelltes „Bearer“ wird automatisch entfernt.

Fügen Sie ein Token ein, um Header, Payload und Zeitangaben zu sehen.

Signatur prüfen

HS256-Testtoken erstellen

JWT dekodieren, ohne dass das Token den Browser verlässt

Ein JWT (JSON Web Token) ist das Token, das viele APIs und Apps nach der Anmeldung austauschen. Mit diesem Werkzeug können Sie ein JWT dekodieren: Es zeigt Header und Payload als farbiges JSON, wandelt Zeitstempel in Datumsangaben um, erklärt die Standard-Claims und prüft die Signatur, wenn Sie das Secret oder den öffentlichen Schlüssel angeben.

Dekodierung, Prüfung und Erstellung laufen vollständig in Ihrem Browser: Kein Token wird gesendet, nichts wird gespeichert. Trotzdem gilt: Fügen Sie nie ein noch gültiges Produktions-Token auf einer Website ein, die Sie nicht kennen. Wer es liest, kann es bis zum Ablauf verwenden.

So funktioniert es

  1. Fügen Sie das Token in das Feld „JWT-Token“ ein. Ein aus einem HTTP-Header kopiertes „Bearer“ wird automatisch entfernt. „Beispiel laden“ setzt ein Demo-Token ein.
  2. Die drei Teile erscheinen farbig, darunter die Bereiche „Header“, „Payload“ und „Signatur“. Fahren Sie mit der Maus über einen unterstrichenen Schlüssel wie exp oder iss, um seine Bedeutung zu lesen.
  3. „Zeitangaben und Gültigkeit“ rechnet iat, nbf und exp in lesbare Daten um und zeigt den Status, etwa „Abgelaufen am …, das liegt 3 Tage zurück“ oder „Noch gültig für 45 Minuten“.
  4. Unter „Signatur prüfen“ geben Sie für HS256, HS384 oder HS512 das gemeinsame Secret ein oder fügen für RS256, PS256 oder ES256 einen öffentlichen Schlüssel im Format PEM oder JWK ein. Das Ergebnis lautet „Signatur gültig“ oder „Signatur ungültig“.
  5. „HS256-Testtoken erstellen“ baut ein Token aus Header, Payload und einem Secret Ihrer Wahl.

So ist ein JWT aufgebaut

Ein signiertes JWT besteht aus drei durch Punkte getrennten Teilen: Header.Payload.Signatur. Der Header eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 ergibt dekodiert {"alg": "HS256", "typ": "JWT"} und nennt den Signaturalgorithmus. Die Payload enthält die Daten, die sogenannten Claims. Im Beispiel des Werkzeugs lautet sie {"sub": "42", "name": "Beispiel", "iat": 1700000000, "exp": 4102444800}: Das Token wurde am 14. November 2023 um 23:13:20 Uhr deutscher Zeit ausgestellt und läuft am 1. Januar 2100 um 01:00 Uhr deutscher Zeit ab. Die Signatur versiegelt die ersten beiden Teile.

Base64url ist keine Verschlüsselung

Header und Payload sind nur base64url-kodiert. Diese Base64-Variante ersetzt + und / durch - und _ und lässt die = am Ende weg. Jeder kann die Payload ohne Schlüssel lesen. Die Signatur verhindert Änderungen, nicht das Lesen. Ein Token mit fünf Teilen ist ein JWE, eine verschlüsselte Form, die das Werkzeug erkennt, aber nicht öffnen kann.

Die Standard-Claims

Der Standard definiert sieben kurze Namen: iss (Aussteller), sub (Subjekt), aud (Zielgruppe), exp (Ablaufzeit), nbf (nicht vor), iat (Ausstellungszeit) und jti (eindeutige Kennung). Zeitangaben sind Unix-Timestamps in Sekunden.

Symmetrische und asymmetrische Signaturen

HS256 nutzt ein einziges Secret zum Signieren und Prüfen, mit HMAC-SHA-256; die Signatur ist 32 Byte lang. RS256 und ES256 nutzen ein Schlüsselpaar: Der Server signiert mit dem privaten Schlüssel, jeder Dienst prüft mit dem öffentlichen, der oft als JWK veröffentlicht wird. Eine RS256-Signatur mit 2048-Bit-Schlüssel hat 256 Byte, eine ES256-Signatur 64 Byte. Steht im Header alg „none“, ist das Token gar nicht signiert. Das Werkzeug warnt dann deutlich, denn ein Server darf so ein Token nie annehmen.

Bewährte Regeln

  • Geben Sie Access-Tokens eine kurze Lebensdauer, von wenigen Minuten bis zu einer Stunde.
  • Legen Sie weder Passwörter noch Secrets oder sensible Daten in die Payload: Jeder kann sie lesen.
  • Prüfen Sie Signatur, erwarteten Algorithmus, exp und aud immer auf dem Server. Das Dekodieren im Browser hilft beim Verstehen, ist aber kein Grund, einem Token zu vertrauen.

Häufige Fragen

Kann ich ein JWT ohne Schlüssel dekodieren?

Ja. Header und Payload lassen sich ohne Schlüssel lesen. Secret oder öffentlicher Schlüssel werden nur für die Prüfung der Signatur gebraucht.

Warum ist die Signatur ungültig, obwohl das Secret stimmt?

Vielleicht speichert Ihr Server das Secret in Base64: Aktivieren Sie „Das Secret ist base64url-kodiert“. Achten Sie auch auf überzählige Leerzeichen und darauf, dass der Algorithmus im Header der Ihres Servers ist.

Wird mein Token gespeichert?

Nein. Token, Secret und Schlüssel bleiben in der Seite, ohne Übertragung und ohne Speicherung. Sie sind weg, sobald Sie den Tab schließen oder neu laden.