5. JOSE Header (JOSE-Header)
Für ein JWT-Objekt beschreiben die Member des JSON-Objekts, das durch den JOSE Header dargestellt wird, die auf das JWT angewendeten kryptografischen Operationen und optional zusätzliche Eigenschaften des JWT. Je nachdem, ob das JWT ein JWS oder JWE ist, gelten die entsprechenden Regeln für die JOSE Header-Werte.
Diese Spezifikation spezifiziert weiterhin die Verwendung der folgenden Header-Parameter sowohl in dem Fall, in dem das JWT ein JWS ist, als auch in dem Fall, in dem es ein JWE ist.
5.1. "typ" (Type) Header Parameter (Typ-Header-Parameter)
Der durch [JWS] und [JWE] definierte "typ" (type) Header-Parameter wird von JWT-Anwendungen verwendet, um den Medientyp [IANA.MediaTypes] dieses vollständigen JWT zu deklarieren. Dies ist für die Verwendung durch die JWT-Anwendung vorgesehen, wenn Werte, die keine JWTs sind, auch in einer Anwendungsdatenstruktur vorhanden sein könnten, die ein JWT-Objekt enthalten kann; die Anwendung kann diesen Wert verwenden, um zwischen den verschiedenen Arten von Objekten zu unterscheiden, die vorhanden sein könnten. Es wird typischerweise nicht von Anwendungen verwendet, wenn die Art des Objekts bereits bekannt ist. Dieser Parameter wird von JWT-Implementierungen ignoriert; jegliche Verarbeitung dieses Parameters wird von der JWT-Anwendung durchgeführt. Falls vorhanden, wird empfohlen (RECOMMENDED), dass sein Wert "JWT" ist, um anzugeben, dass dieses Objekt ein JWT ist. Obwohl Medientypnamen nicht zwischen Groß- und Kleinschreibung unterscheiden, wird empfohlen (RECOMMENDED), dass "JWT" immer in Großbuchstaben geschrieben wird, um die Kompatibilität mit Legacy-Implementierungen zu gewährleisten. Die Verwendung dieses Header-Parameters ist optional (OPTIONAL).
5.2. "cty" (Content Type) Header Parameter (Content-Type-Header-Parameter)
Der durch [JWS] und [JWE] definierte "cty" (content type) Header-Parameter wird durch diese Spezifikation verwendet, um strukturelle Informationen über das JWT zu übermitteln.
Im normalen Fall, in dem keine verschachtelten Signierungs- oder Verschlüsselungsoperationen verwendet werden, wird die Verwendung dieses Header-Parameters nicht empfohlen (NOT RECOMMENDED). Im Fall, dass verschachtelte Signierung oder Verschlüsselung verwendet wird, muss (MUST) dieser Header-Parameter vorhanden sein; in diesem Fall muss (MUST) der Wert "JWT" sein, um anzugeben, dass ein verschachteltes JWT (Nested JWT) in diesem JWT getragen wird. Obwohl Medientypnamen nicht zwischen Groß- und Kleinschreibung unterscheiden, wird empfohlen (RECOMMENDED), dass "JWT" immer in Großbuchstaben geschrieben wird, um die Kompatibilität mit Legacy-Implementierungen zu gewährleisten. Siehe Anhang A.2 für ein Beispiel eines verschachtelten JWT.
5.3. Replicating Claims as Header Parameters (Replikation von Ansprüchen als Header-Parameter)
In einigen Anwendungen ist es nützlich, bestimmte Ansprüche direkt für die Software sichtbar zu machen, die das JWT verarbeitet, ohne das JWT zuerst entschlüsseln oder verifizieren zu müssen. Dies kann erreicht werden, indem die Anspruchswerte als Header-Parameter-Werte repliziert werden.
Diese Spezifikation verlangt oder verbietet die Replikation von Ansprüchen in Header-Parametern nicht. Anwendungen, die sich dafür entscheiden, müssen (MUST) jedoch diese Regeln befolgen:
-
Die Anwesenheit des Anspruchs und die Wertsemantik müssen (MUST) bewahrt werden, unabhängig davon, ob der Anspruch im JWT Claims Set oder als Header-Parameter vorhanden ist.
-
Wenn dieselbe Information an beiden Orten vorhanden ist, müssen (MUST) ihre Werte identisch sein. Implementierungen müssen (MUST) diese Konsistenz überprüfen und das JWT ablehnen, wenn sie inkonsistent sind.