Was ein JWT enthält
Ein JWT besteht aus drei durch Punkte getrennten Teilen: einem Header (Signaturalgorithmus, etwa HS256 oder RS256), einem Payload mit den Claims (Benutzer-ID in sub, Ablauf in exp, Aussteller in iss, Zielgruppe in aud …) und einer Signatur. Header und Payload sind nur base64url-kodiert, nicht verschlüsselt: Wer das Token hat, kann sie lesen.
Dekodieren ist nicht Verifizieren
Diese Seite prüft die Signatur nicht, dafür wären das Secret (HS256) oder der öffentliche Schlüssel des Ausstellers (RS256, ES256) nötig. Ein dekodiertes Token kann also gefälscht sein. Ihr Server muss Signatur und die Claims exp, nbf, iss und aud immer mit einer JWT-Bibliothek prüfen. Ein Token mit "alg": "none" hat keine Signatur und muss abgelehnt werden.
Warum lokal dekodieren
Zugriffstokens sind Zugangsdaten: Wer ein aktives Token in eine Website einfügt, die es an einen Server schickt, riskiert den Zugriff auf Konto oder API. Hier ist das Dekodieren reines JavaScript in Ihrem Tab, nichts wird hochgeladen oder protokolliert. Verschlüsselte Tokens (JWE, fünf Teile) sind ohne Schlüssel nicht lesbar, das Tool weist darauf hin.
Beispiel
Das öffentliche Beispiel-Token aus der JWT-Dokumentation. Der Zeitstempel iat erscheint als Datum; die Signatur wird angezeigt, aber nicht geprüft.
Eingabe
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Ergebnis
Header:
{
"alg": "HS256",
"typ": "JWT"
}
Payload:
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
Dates (UTC):
iat: 2018-01-18T01:30:22Z
Signature: 43 characters, NOT verified