JWT-Authentifizierung
JSON Web Token (JWT) ist ein kompaktes Format zur Darstellung von Ansprüchen, das für platzbeschränkte Umgebungen wie HTTP und URI-Abfrageparameter gedacht ist. Ein Anspruch wird als Name/Wert-Paar dargestellt, das einen Anspruchsnamen und einen Anspruchswert enthält.
Die Ansprüche in einem JWT werden als JSON-Objekt codiert, das als Nutzdaten einer JWS-Struktur (JSON Web Signature) oder als unverschlüsselter Text einer JWE-Struktur (JSON Web Encryption) verwendet wird. JWT-Deklarationen können digital signiert oder durch einen Message Authentication Code (MAC) geschützt und auch verschlüsselt werden.
JWT-Übersicht
JWT stellt eine Gruppe von Ansprüchen als JSON-Objekt dar, das in einer JWS-oder JWE-Struktur codiert ist. Dieses JSON-Objekt ist die JWT-Anspruchsgruppe. Das JSON-Objekt besteht aus null oder mehr Name/Wert-Paaren (oder Membern), wobei die Namen Zeichenfolgen und die Werte beliebige JSON-Werte sind. Diese Member sind die Claims, die vom JWT dargestellt werden. Die Membernamen in der JWT-Anspruchsgruppe werden als Anspruchsnamen bezeichnet. Die entsprechenden Werte werden als Schadenswerte bezeichnet.
Ein JWT wird als eine Folge von URL Teilen dargestellt, die durch Punkt ('.') getrennt sind. Jeder Teil enthält einen base64url-encoded Wert. Die Anzahl der Abschnitte im JWT hängt von der Darstellung des resultierenden JWS mit JWS Compact Serialization bzw. JWE mit JWE Compact Serialization ab.
Typen von JWT
JWT-Beispiel
The format of a typical JWS is <Base 64 URL verschlüsselt Header json>.<Base 64 URK kodierte Nutzlast json>.<Base 64 URL verschlüsselte Signatur>
Header
{
"alg": "RS256",
"typ": "JWT",
"kid": "a1"
}
Payload
{
"sub": "1234567890",
"name": "John Doe",
"admin": true,
"iat": 1516239022,
"exp": 1531762065
}eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0
.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ
.z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT
5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDkWie im Beispiel dargestellt, besteht die JWS aus den folgenden Teilen und wird durch das Zeichen "." getrennt gesetzt.
- Überschrift =
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0 - Nutzdaten =
G4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ - Signatur =
z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDk