Wie können wir mit dieser Geschichte und einigen Standards als Grundlage das JWT von oben verarbeiten und welche Informationen enthält es?
Das obige JWT besteht aus drei Teilen, die jeweils durch einen Punkt ('.') getrennt sind:
- Header:: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
- Payload: eyJzdWIiOiIxMjM0Nty3ODkwQUJDIiwibmFtZSI6IkhlbnJpayBMb2VzZXIiLCJpYXQiOjE2MTExNDA0MDAsImV4cCI6MtyxMTIzNDU2N30
- Signatur: _iVbBcypdse-9sjrxp9iOrGsXKBWrBB3mrHgBtukcfM
Sowohl Header als auch Payload sind Base64url- kodiert und können wie folgt dekodiert werden, wenn mögliches Padding nicht berücksichtigt wird:
henrik@home> base64 -d <<< eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
{"alg":"HS256","typ":"JWT"}
henrik@home> base64 -d <<< eyJzdWIiOiIxMjM0NTY3ODkwQUJDIiwibmFtZSI6IkhlbnJpayBMb2VzZXIiLCJpYXQiOjE2MTExNDA0MDAsImV4cCI6MTYxMTIzNDU2N30
{"sub":"1234567890ABC","name":"Henrik Loeser","iat":1611140400,"exp":1611234567}base64: invalid input
Der Header enthält Informationen über den verwendeten alg(orithm) – hier HS256 (HMAC SHA256). Die Payload hängt von der Art des Tokens (Zugriff/Aktualisierung/ID/…) ab und besteht aus Anforderungen. Diese und andere vordefinierte JOSE Header- und Payload-Felder werden von IANA verwaltet. Im obigen Beispiel sind die Felder und Anforderungen subj(ect), Name, ausgestellt am (iat) und exp(iration time).
Die Signatur wird berechnet, indem der angegebene Algorithmus auf die Verkettung von Header, '.' und Payload analysiert und anschließend das Ergebnis mit base64url kodiert. Danach bilden die drei durch einen Punkt getrennten Teile das JWT. Einzelheiten zur Ableitung von Signaturen sind in RFC 7515 definiert.
Sie können auf das oben genannte JWT in diesem Online-Debugger unter JTW.io zugreifen. Zunächst wird die Meldung „Invalid Signature“ (Ungültige Signatur) angezeigt. Sie können sie beheben, indem Sie das angezeigte Standardgeheimnis durch !my-really-big-256-bit-secret! ersetzen.