Header
Der JWT-Header besteht aus dem Token-Typ und dem Algorithmus, der zum Signieren und Codieren verwendet wird. Algorithmen können HMAC, SHA256, RSA, HS256 oder RS256 sein.
{
"typ": "JWT",
"alg": "HS256"
}
Payload
Payload besteht aus den Sitzungsdaten, die als Ansprüche bezeichnet werden. Im Folgenden sind einige der Standardansprüche aufgeführt, die wir verwenden können,
- Emittent(iss)
- Betreff (sub)
- Publikum (aud)
- Ablaufzeit (exp)
- Ausgestellt am (iat)
{
"sub": "user10001",
"iat": 1569302116
}
Benutzerdefinierte Ansprüche können auch in den Anspruchssatz aufgenommen werden. Bei Verwendung von benutzerdefinierten Anspruchssätzen,
- Fügen Sie keine großen Datenmengen in Anspruchssätze ein. Claim Sets sollen kompakt sein.
- Geben Sie keine sensiblen Informationen ein, da JWT leicht dekodiert werden kann.
{
"sub": "user10001",
"iat": 1569302116,
"role": "admin",
"user_id": "user10001"
}
Signatur
Die Signatur ist der wichtigste Teil eines JSON-Web-Tokens (JWT). Die Signatur wird berechnet, indem der Header und die Nutzlast mit der Base64url-Codierung codiert und mit einem Punkttrennzeichen verkettet werden. Was dann dem kryptographischen Algorithmus gegeben wird.
// signature algorithm
data = base64urlEncode( header ) + "." + base64urlEncode( payload )signature = HMAC-SHA256( data, secret_salt )
Wenn sich also der Header oder die Nutzlast ändert, muss die Signatur erneut berechnet werden. Nur der Identitätsanbieter (IdP) hat den privaten Schlüssel, um die Signatur zu berechnen, die die Manipulation des Tokens verhindert.
Wie es funktioniert?
Grundsätzlich generiert der Identitätsanbieter (IdP) ein JWT, das die Benutzeridentität zertifiziert, und der Ressourcenserver dekodiert und überprüft die Authentizität des Tokens mithilfe eines geheimen Salt / öffentlichen Schlüssels.
- Benutzeranmeldung mit Benutzername und Passwort oder Google / Facebook.
- Der Authentifizierungsserver überprüft die Anmeldeinformationen und gibt ein jwt aus, das entweder mit einem geheimen Salt oder einem privaten Schlüssel signiert ist.
- Der Client des Benutzers verwendet die JWT, um auf geschützte Ressourcen zuzugreifen, indem er die JWT im HTTP-Autorisierungsheader übergibt.
- Der Ressourcenserver überprüft dann die Authentizität des Tokens mithilfe des geheimen Salt / öffentlichen Schlüssels.