Zum Hauptinhalt springen

4. JWT Claims (JWT-Ansprüche)

Das JWT Claims Set (JWT-Anspruchssatz) repräsentiert ein JSON-Objekt, dessen Member die vom JWT übermittelten Ansprüche sind. Die Claim Names (Anspruchsnamen) innerhalb eines JWT Claims Set müssen eindeutig sein (MUST). JWT-Parser müssen entweder JWTs mit doppelten Anspruchsnamen ablehnen (MUST) oder einen JSON-Parser verwenden, der nur den lexikalisch letzten doppelten Membernamen zurückgibt, wie in Abschnitt 15.12 ("The JSON Object") von ECMAScript 5.1 [ECMAScript] spezifiziert.

Die Menge der Ansprüche, die ein JWT enthalten muss, um als gültig angesehen zu werden, ist kontextabhängig und liegt außerhalb des Umfangs dieser Spezifikation. Spezifische Anwendungen von JWTs erfordern, dass Implementierungen einige Ansprüche auf bestimmte Weise verstehen und verarbeiten. In Abwesenheit solcher Anforderungen müssen jedoch alle Ansprüche, die von Implementierungen nicht verstanden werden, ignoriert werden (MUST).

Es gibt drei Klassen von JWT Claim Names: Registered Claim Names (Registrierte Anspruchsnamen), Public Claim Names (Öffentliche Anspruchsnamen) und Private Claim Names (Private Anspruchsnamen).

4.1. Registered Claim Names (Registrierte Anspruchsnamen)

Die folgenden Anspruchsnamen sind im IANA "JSON Web Token Claims" Register registriert, das durch Abschnitt 10.1 eingerichtet wurde. Keiner der unten definierten Ansprüche ist dafür vorgesehen, in allen Fällen obligatorisch verwendet oder implementiert zu werden, sondern sie bieten vielmehr einen Ausgangspunkt für eine Reihe nützlicher, interoperabler Ansprüche. Anwendungen, die JWTs verwenden, sollten (SHOULD) spezifizieren, welche spezifischen Ansprüche sie verwenden und wann diese erforderlich oder optional sind. Alle Namen sind kurz, da ein Kernziel von JWTs ist, dass die Darstellung kompakt ist.

4.1.1. "iss" (Issuer) Claim (Aussteller-Anspruch)

Der "iss" (issuer) Anspruch identifiziert den Principal, der das JWT ausgestellt hat. Die Verarbeitung dieses Anspruchs ist im Allgemeinen anwendungsspezifisch. Der "iss" Wert ist eine groß-/kleinschreibungsempfindliche Zeichenkette, die einen StringOrURI-Wert enthält. Die Verwendung dieses Anspruchs ist optional (OPTIONAL).

4.1.2. "sub" (Subject) Claim (Subjekt-Anspruch)

Der "sub" (subject) Anspruch identifiziert den Principal, der das Subjekt des JWT ist. Die Ansprüche in einem JWT sind normalerweise Aussagen über das Subjekt. Der Subjektwert muss (MUST) entweder so festgelegt werden, dass er im Kontext des Ausstellers lokal eindeutig ist, oder global eindeutig sein. Die Verarbeitung dieses Anspruchs ist im Allgemeinen anwendungsspezifisch. Der "sub" Wert ist eine groß-/kleinschreibungsempfindliche Zeichenkette, die einen StringOrURI-Wert enthält. Die Verwendung dieses Anspruchs ist optional (OPTIONAL).

4.1.3. "aud" (Audience) Claim (Zielgruppen-Anspruch)

Der "aud" (audience) Anspruch identifiziert die Empfänger, für die das JWT bestimmt ist. Jeder Principal, der das JWT verarbeiten soll, muss sich (MUST) mit einem Wert im Audience-Anspruch identifizieren. Wenn sich der Principal, der den Anspruch verarbeitet, nicht mit einem Wert im "aud" Anspruch identifiziert, wenn dieser Anspruch vorhanden ist, dann muss das JWT abgelehnt werden (MUST). Im allgemeinen Fall ist der "aud" Wert ein Array von groß-/kleinschreibungsempfindlichen Zeichenketten, die jeweils einen StringOrURI-Wert enthalten. Im Sonderfall, wenn das JWT nur eine Zielgruppe hat, kann (MAY) der "aud" Wert eine einzelne groß-/kleinschreibungsempfindliche Zeichenkette sein, die einen StringOrURI-Wert enthält. Die Interpretation von Audience-Werten ist im Allgemeinen anwendungsspezifisch. Die Verwendung dieses Anspruchs ist optional (OPTIONAL).

4.1.4. "exp" (Expiration Time) Claim (Ablaufzeit-Anspruch)

Der "exp" (expiration time) Anspruch identifiziert die Ablaufzeit, zu der oder nach der das JWT nicht zur Verarbeitung akzeptiert werden darf (MUST NOT). Die Verarbeitung des "exp" Anspruchs erfordert, dass das aktuelle Datum/die aktuelle Uhrzeit vor dem in dem "exp" Anspruch aufgeführten Ablaufdatum/-zeit liegen muss (MUST). Implementierer können (MAY) einen kleinen Spielraum, normalerweise nicht mehr als einige Minuten, vorsehen, um Uhrenabweichungen zu berücksichtigen. Sein Wert muss (MUST) eine Zahl sein, die einen NumericDate-Wert enthält. Die Verwendung dieses Anspruchs ist optional (OPTIONAL).

4.1.5. "nbf" (Not Before) Claim (Gültig-ab-Anspruch)

Der "nbf" (not before) Anspruch identifiziert die Zeit, vor der das JWT nicht zur Verarbeitung akzeptiert werden darf (MUST NOT). Die Verarbeitung des "nbf" Anspruchs erfordert, dass das aktuelle Datum/die aktuelle Uhrzeit nach oder gleich dem in dem "nbf" Anspruch aufgeführten Gültig-ab-Datum/-zeit sein muss (MUST). Implementierer können (MAY) einen kleinen Spielraum, normalerweise nicht mehr als einige Minuten, vorsehen, um Uhrenabweichungen zu berücksichtigen. Sein Wert muss (MUST) eine Zahl sein, die einen NumericDate-Wert enthält. Die Verwendung dieses Anspruchs ist optional (OPTIONAL).

4.1.6. "iat" (Issued At) Claim (Ausstellungszeit-Anspruch)

Der "iat" (issued at) Anspruch identifiziert die Zeit, zu der das JWT ausgestellt wurde. Dieser Anspruch kann verwendet werden, um das Alter des JWT zu bestimmen. Sein Wert muss (MUST) eine Zahl sein, die einen NumericDate-Wert enthält. Die Verwendung dieses Anspruchs ist optional (OPTIONAL).

4.1.7. "jti" (JWT ID) Claim (JWT-ID-Anspruch)

Der "jti" (JWT ID) Anspruch stellt einen eindeutigen Identifikator für das JWT bereit. Der Identifikatorwert muss (MUST) auf eine Weise zugewiesen werden, die sicherstellt, dass die Wahrscheinlichkeit, dass derselbe Wert versehentlich einem anderen Datenobjekt zugewiesen wird, vernachlässigbar ist; wenn die Anwendung mehrere Aussteller verwendet, müssen (MUST) Kollisionen auch zwischen Werten verhindert werden, die von verschiedenen Ausstellern produziert werden. Der "jti" Anspruch kann verwendet werden, um zu verhindern, dass das JWT wiederholt wird. Der "jti" Wert ist eine groß-/kleinschreibungsempfindliche Zeichenkette. Die Verwendung dieses Anspruchs ist optional (OPTIONAL).

4.2. Public Claim Names (Öffentliche Anspruchsnamen)

Anspruchsnamen können von denen, die JWTs verwenden, nach Belieben definiert werden. Um Kollisionen zu vermeiden, sollte (SHOULD) jedoch jeder neue Anspruchsname entweder im IANA "JSON Web Token Claims" Register registriert werden, das durch Abschnitt 10.1 eingerichtet wurde, oder ein öffentlicher Name (Public Name) sein: ein Wert, der einen kollisionsresistenten Namen (Collision-Resistant Name) enthält. In jedem Fall muss der Definierer des Namens oder Werts angemessene Vorkehrungen treffen, um sicherzustellen, dass er den Teil des Namensraums kontrolliert, den er zur Definition des Anspruchsnamens verwendet.

4.3. Private Claim Names (Private Anspruchsnamen)

Ein Produzent und Konsument eines JWT können (MAY) vereinbaren, private Namen (Private Names) als Anspruchsnamen zu verwenden: Namen, die weder registrierte Anspruchsnamen (Abschnitt 4.1) noch öffentliche Anspruchsnamen (Abschnitt 4.2) sind. Im Gegensatz zu öffentlichen Anspruchsnamen sind private Anspruchsnamen kollisionsgefährdet und sollten mit Vorsicht verwendet werden.