JSON Web Tokens entschlüsseln
Ein JSON Web Token (JWT) ist eine kompakte Zeichenfolge, die zur Übermittlung von Identitäts- und Berechtigungsinformationen zwischen Systemen verwendet wird – meist als Authorization: Bearer-Header nach dem Login. Er sieht aus wie zufälliger Text, besteht aber aus drei Base64URL-kodierten Teilen: einem Header, einer Payload mit Claims und einer Signatur. Dieser JWT-Decoder teilt den Token, entschlüsselt die ersten beiden Teile in lesbares JSON und erläutert die wichtigsten Claims. Die Entschlüsselung und Verifizierung finden lokal statt, sodass Ihr Token niemals übertragen wird.
Funktionen
- Header und Payload werden entschlüsselt und übersichtlich formatiert angezeigt, jeweils mit einem Kopieren-Button.
- Erläuterung der Zeit-Claims:
iat,nbf,expundauth_timewerden von Epochen-Sekunden in Datumsangaben Ihrer Zeitzone umgewandelt. - Ablaufprüfung, die Ihnen auf einen Blick anzeigt, ob der Token abgelaufen oder noch nicht aktiv ist.
- HMAC-Signaturverifizierung für HS256, HS384 und HS512 über die Web Crypto API Ihres Browsers.
- Funktioniert offline, nachdem die Seite geladen wurde; es werden keine Daten gesendet.
Anwendungsfälle
Debugging der Authentifizierung. Wenn eine Anfrage mit „401 Unauthorized“ fehlschlägt, entschlüsseln Sie den Token, um zu prüfen, ob er abgelaufen ist, für die richtige Zielgruppe (aud) ausgestellt wurde oder die erwarteten Rollen und Berechtigungsbereiche (Scopes) enthält.
Entwicklung und Testen von APIs. Verifizieren Sie vor der Veröffentlichung, dass Ihr Server die beabsichtigten Claims mit korrekten Ablaufzeiten in den Token einfügt.
Lernen, wie OAuth und OpenID Connect funktionieren. ID-Tokens und Access-Tokens von Identity-Providern sind oft JWTs. Das Entschlüsseln eines Test-Tokens zeigt, welche Informationen der Provider über einen Benutzer teilt.
Anatomie eines JWT
header.payload.signature
- Header – der Tokentyp und der Signaturalgorithmus, z. B.
{"alg":"HS256","typ":"JWT"}. - Payload – die Claims. Registrierte Claims umfassen
iss(issuer, Aussteller),sub(subject, Subjekt, i. d. R. die Benutzer-ID),aud(audience, Zielgruppe),exp,nbf,iatundjti(token ID). Anwendungen fügen benutzerdefinierte Claims wienameoderrolehinzu. - Signatur – wird durch Signieren von
header.payloadmit einem Secret (HMAC) oder einem privaten Schlüssel (RSA, ECDSA, EdDSA) erstellt. Wenn jemand auch nur ein einziges Zeichen des Headers oder der Payload ändert, stimmt die Signatur nicht mehr überein.
Da die Payload nur kodiert ist, sollten Sie niemals Geheimnisse wie Passwörter in einem JWT speichern. Um andere Base64-Daten zu dekodieren, verwenden Sie das Base64-Tool; um Zeitstempel zu prüfen, nutzen Sie den Unix-Zeitstempel-Umrechner.