Der JWT aud
(Audience) Claim
Laut RFC 7519 :
Der Anspruch "aud" (Publikum) identifiziert die Empfänger, für die das JWT bestimmt ist. Jeder Auftraggeber, der die JWT verarbeiten möchte, MUSS sich mit einem Wert im Publikumsanspruch identifizieren. Wenn sich der Auftraggeber, der den Anspruch bearbeitet, nicht mit einem Wert im Anspruch "aud" identifiziert, wenn dieser Anspruch vorliegt, MUSS das JWT abgelehnt werden. Im allgemeinen Fall ist der Wert "aud" ein Array von Zeichenfolgen, bei denen zwischen Groß- und Kleinschreibung unterschieden wird und die jeweils einen StringOrURI-Wert enthalten. In dem speziellen Fall, in dem das JWT eine Zielgruppe hat, kann der Wert "aud" eine einzelne Zeichenfolge sein, bei der zwischen Groß- und Kleinschreibung unterschieden wird und die einen StringOrURI-Wert enthält. Die Interpretation der Publikumswerte ist in der Regel anwendungsspezifisch.
Die Verwendung dieses Anspruchs ist OPTIONAL.
Der in aud
der Spezifikation definierte Audience ( ) -Anspruch ist generisch und anwendungsspezifisch. Der Verwendungszweck besteht darin, die beabsichtigten Empfänger des Tokens zu identifizieren. Was ein Empfänger bedeutet, ist anwendungsspezifisch. Ein Zielgruppenwert ist entweder eine Liste von Zeichenfolgen oder eine einzelne Zeichenfolge, wenn nur ein aud
Anspruch besteht. Der Ersteller des Tokens erzwingt keine aud
korrekte Validierung. Der Empfänger ist dafür verantwortlich, zu bestimmen, ob das Token verwendet werden soll.
Was auch immer der Wert ist, wenn ein Empfänger das JWT validiert und validieren möchte, dass das Token für seine Zwecke verwendet werden soll, MUSS er bestimmen, welcher Wert aud
sich selbst identifiziert, und das Token sollte nur validieren, wenn die deklarierte ID des Empfängers lautet im aud
Anspruch vorhanden. Es spielt keine Rolle, ob dies eine URL oder eine andere anwendungsspezifische Zeichenfolge ist. Wenn sich mein System beispielsweise aud
mit der Zeichenfolge identifiziert api3.app.com
, sollte es die JWT nur akzeptieren, wenn der aud
Anspruch api3.app.com
in seiner Liste der Zielgruppenwerte enthalten ist.
Natürlich können sich Empfänger dafür entscheiden, dies zu ignorieren aud
. Dies ist daher nur dann sinnvoll, wenn ein Empfänger eine positive Bestätigung wünscht, dass das Token speziell für ihn erstellt wurde.
Meine Interpretation basierend auf der Spezifikation ist, dass die aud
Behauptung nützlich ist, um zweckgebundene JWTs zu erstellen, die nur für bestimmte Zwecke gültig sind. Für ein System kann dies bedeuten, dass ein Token für einige Funktionen gültig sein soll, für andere jedoch nicht. Sie können Token ausgeben, die nur auf eine bestimmte "Zielgruppe" beschränkt sind, während Sie dieselben Schlüssel und denselben Validierungsalgorithmus verwenden.
Da im typischen Fall ein JWT von einem vertrauenswürdigen Dienst generiert und von anderen vertrauenswürdigen Systemen (Systemen, die keine ungültigen Token verwenden möchten) verwendet wird, müssen diese Systeme lediglich die von ihnen verwendeten Werte koordinieren.
Natürlich aud
ist es völlig optional und kann ignoriert werden, wenn Ihr Anwendungsfall dies nicht rechtfertigt. Wenn Sie Token nicht auf die Verwendung durch bestimmte Zielgruppen beschränken möchten oder keines Ihrer Systeme das aud
Token tatsächlich validiert , ist es nutzlos.
Beispiel: Zugriffs- oder Aktualisierungstoken
Ein erfundenes (aber einfaches) Beispiel, an das ich denken kann, ist vielleicht, dass wir JWTs für Zugriffs- und Aktualisierungstoken verwenden möchten, ohne separate Verschlüsselungsschlüssel und -algorithmen implementieren zu müssen, sondern lediglich sicherstellen möchten, dass Zugriffstoken nicht als Aktualisierungstoken oder Laster validiert werden -versa.
Durch die Verwendung können aud
wir beim Erstellen dieser Token einen Anspruch refresh
auf Aktualisierungstoken und einen Anspruch access
auf Zugriffstoken angeben . Wenn eine Anforderung zum Abrufen eines neuen Zugriffstokens von einem Aktualisierungstoken gestellt wird, müssen wir überprüfen, ob das Aktualisierungstoken ein echtes Aktualisierungstoken war. Die aud
oben beschriebene Validierung zeigt an, ob das Token tatsächlich ein gültiges Aktualisierungstoken war, indem speziell nach einem Anspruch von refresh
in gesucht wird aud
.
OAuth Client ID vs. JWT aud
Claim
Die OAuth-Client-ID ist völlig unabhängig und steht in keinem direkten Zusammenhang mit JWT- aud
Ansprüchen. Aus der Sicht von OAuth sind die Token undurchsichtige Objekte.
Die Anwendung, die diese Token akzeptiert, ist für das Parsen und Überprüfen der Bedeutung dieser Token verantwortlich. Ich sehe nicht viel Wert darin, die OAuth-Client-ID in einem JWT- aud
Anspruch anzugeben .
aud REQUIRED for session_token. Contains the client_id of the client receiving the assertion.