JSON Web Tokens erklärt: Header, Payload und Signatur, die sieben registrierten Claims aus RFC 7519, Sicherheitsfallen und ein Decoder, der dein Token nirgendwohin sendet.
Ein JWT (JSON Web Token) ist ein kompakter, URL-sicherer String aus drei base64url-Teilen, getrennt durch Punkte: ein Header, der den Algorithmus nennt, ein Payload mit Claims wie sub und exp und eine Signatur. Jeder kann den Payload dekodieren und lesen, nur die Signatur, geprüft mit dem richtigen Schlüssel, beweist, dass niemand ihn verändert hat.
Registrierte Claim-Namen (RFC 7519, Abschnitt 4.1)
Füge unten ein Token in den Decoder ein, um Header und Payload zu sehen, mit einer Erklärung zu jedem registrierten Claim und jedem Zeitstempel als lesbarem Datum. Das Dekodieren passiert im JavaScript dieser Seite, das Token wird also nie hochgeladen. Das ist wichtig, denn ein gültiges Token ist ein Schlüssel zum Konto einer Person.
Nur wenn das Dekodieren in deinem Browser passiert. Das Token ist ein Zugangsnachweis: Wer ein gültiges besitzt, kann die API als dieser Nutzer aufrufen, bis es abläuft. Der Decoder dieser Seite läuft lokal und sendet nichts, aber bei Produktions-Tokens ist es am sichersten, nur Test-Tokens zu dekodieren.
Ein normales signiertes JWT (ein JWS) nicht. Sein Payload ist nur base64url-kodiert, was jeder umkehren kann. Verschlüsselte Tokens gibt es als JWE, mit fünf durch Punkte getrennten Teilen statt drei, aber die meisten Login- und API-Tokens sind signiert, nicht verschlüsselt.
NumericDate: ganze Sekunden seit 1970-01-01T00:00:00Z, ohne Schaltsekunden. Date.now() in JavaScript liefert Millisekunden, teile also vor dem Vergleich durch 1000, ein sehr häufiger Bug.
Jedes Skript auf der Seite kann localStorage lesen, ein einziger Cross-Site-Scripting-Bug kann das Token also stehlen. Ein HttpOnly-, Secure-, SameSite-Cookie hält es von Skripten fern, dafür musst du dich um CSRF kümmern. Viele Teams wählen für Browser-Sessions das Cookie.
Nicht allein damit, denn das Token bleibt bis exp gültig. Nutze kurze Ablaufzeiten plus Refresh Tokens, die du widerrufen kannst, oder führe eine Sperrliste von jti-Werten für Tokens, die vorzeitig ungültig werden müssen.
Liest die Claims, ohne sie zu prüfen. In Ordnung, um einen Nutzernamen in der UI anzuzeigen, aber nie, um über Zugriff zu entscheiden.
jwtVerify prüft Signatur, exp und nbf und mit diesen Optionen auch Issuer, Audience und den erlaubten Algorithmus.
Füge ein Token ein, um Header und Payload zu lesen. Das Dekodieren läuft in deinem Browser, das Token wird weder gesendet noch gespeichert noch protokolliert.
Wer das Token ausgestellt hat
Um wen es im Token geht, meist eine Nutzer-ID
Welche Empfänger es akzeptieren sollen
Ab diesem Zeitpunkt ablehnen
Vor diesem Zeitpunkt ablehnen
Wann das Token erstellt wurde
Eine eindeutige ID, nützlich, um Wiederverwendung zu blockieren
JWT
Beispiel-Token laden
Leeren
Header
Payload
Signatur (hier nicht geprüft)
Claims erklärt
Claim
Wert
Bedeutung
Eigener Claim
Ein signiertes JWT hat 3 durch Punkte getrennte Teile, dieses hat {n}.
5 Teile bedeuten ein verschlüsseltes JWE, das ohne den Schlüssel nicht gelesen werden kann.
Teil {n} ist kein gültiges base64url-JSON.
Abgelaufen {v}
Gültig bis {v}
Nicht gültig vor {v}
alg ist none: Dieses Token hat keine Signatur und muss abgelehnt werden.
Lokal dekodiert. Nichts verlässt diese Seite.
Kostenlos starten · Keine Kreditkarte nötig