Decodierter Header
{
"alg": "HS256",
"typ": "JWT"
}
Decodiertes Payload
{
"sub": "1234567890",
"name": "John Doe",
"email": "john@example.com",
"role": "admin",
"iat": 1516239022,
"exp": 1735689600
}
Signatur
TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
Die Signatur kann nicht decodiert werden. Es sind keine kodierten Daten, sondern die Ausgabe einer HMAC-SHA256 Operation. Um sie zu verifizieren, benötigst du den geheimen Schlüssel, der beim Ausstellen des Tokens verwendet wurde.
Drei-Teile JWT Struktur
Ein JWT besteht aus drei Base64url-kodierten Abschnitten, die durch Punkte verbunden sind:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0
.
TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
Die Struktur ist definiert durch RFC 7519 und RFC 7515. Jeder Abschnitt hat einen anderen Zweck:
Header
Der Header gibt den Tokentyp und den Signaturalgorithmus an. alg teilt dem Validator mit, welcher Algorithmus zur Berechnung der Signatur verwendet wurde. typ ist bei Standard Tokens immer JWT. Einige Tokens enthalten auch kid (key ID), um anzugeben, welcher spezifische Schlüssel verwendet wurde; das ist wichtig, wenn ein Autorisierungsserver Schlüssel rotiert.
Payload
Das Payload enthält die Claims: Aussagen über das Subjekt und zusätzliche Metadaten. Standard registrierte Claims haben kurze Namen, um Tokens kompakt zu halten (sub, iss, exp). Benutzerdefinierte Claims können alles sein, was deine Anwendung benötigt, aber die JWT Spezifikation empfiehlt die Verwendung eines Namespace-Formats für benutzerdefinierte Claims, um Kollisionen zu vermeiden (z.B. https://myapp.com/role).
Signatur
Die Signatur wird über base64url(header) + "." + base64url(payload) mit dem im Header angegebenen Algorithmus berechnet. Für HS256 ist es HMAC-SHA256(secret, data). Für RS256 ist es RSA-SHA256(privateKey, data). Die Signatur stellt sicher, dass der Token nicht manipuliert wurde, kann aber ohne den Schlüssel nicht überprüft werden.
Sicherheitshinweise
Ein JWT enthält codierte, aber nicht verschlüsselte Daten. Behandle die Payload Daten niemals als vertraulich. Tokens sollten keine Passwörter, API Schlüssel, Kreditkartendaten oder persönliche Informationen enthalten, deren Offenlegung ein Sicherheitsproblem darstellen würde. Verwende JWT für Identitätsclaims und Autorisierungsinformationen, aber nicht für vertrauliche Nutzdaten.
Wenn du JWT Claims mit Unix-Timestamps untersuchst, verwende den Unix Timestamp Konverter, um sie in lesbare Daten umzuwandeln. Der JWT Decoder decodiert jeden Token sofort in deinem Browser.