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 hat in erster Linie zwei Typen:
  • JSON Web Signature (JWS) -Der Inhalt dieses JWT-Typs wird digital signiert, um sicherzustellen, dass die Inhalte des JWT während der Übertragung zwischen dem Sender und dem Empfänger nicht manipuliert werden. Der Inhalt oder die Ansprüche des JWS können auch von anderen Parteien gelesen werden. Daher kann ein JWS verwendet werden, um die Integrität des Inhalts oder der Anforderung zu überprüfen, aber es sollte nicht verwendet werden, um sensible Daten wie Kennwörter zu übertragen. JWS wird in der Regel über HTTPS oder SSL verwendet, da es nicht von vornherein verhindert, dass die Daten gelesen werden können.
  • JSON Web Encryption (JWE) -Der Inhalt dieses JWT-Typs wird digital verschlüsselt. Dies bedeutet, dass es verwendet werden kann, um die Integrität zu überprüfen und den Inhalt zu schützen. Es kann über einfaches HTTP verwendet werden, da es den Inhalt von Haus aus verschlüsselt.
Hinweis: Sterling™ Order Management System unterstützt nur JWS.

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>

Die folgende Signatur wird durch Signieren des Inhalts des Base URL Headers und Payloads mit einem kryptografischen Schlüssel unter Verwendung des RS256 erhalten.
Header 
{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "a1"
}

Payload
{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true,
  "iat": 1516239022,
  "exp": 1531762065
}
Die folgende Abbildung zeigt die JWS-Beispieldarstellung von JWT, das mit dem privaten Schlüssel RS256 signiert ist.
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0
.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ
.z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT
5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDk

Wie 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