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 audder 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 audAnspruch besteht. Der Ersteller des Tokens erzwingt keine audkorrekte 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 audsich selbst identifiziert, und das Token sollte nur validieren, wenn die deklarierte ID des Empfängers lautet im audAnspruch vorhanden. Es spielt keine Rolle, ob dies eine URL oder eine andere anwendungsspezifische Zeichenfolge ist. Wenn sich mein System beispielsweise audmit der Zeichenfolge identifiziert api3.app.com, sollte es die JWT nur akzeptieren, wenn der audAnspruch api3.app.comin 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 audBehauptung 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 audist 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 audToken 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 audwir beim Erstellen dieser Token einen Anspruch refreshauf Aktualisierungstoken und einen Anspruch accessauf 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 audoben beschriebene Validierung zeigt an, ob das Token tatsächlich ein gültiges Aktualisierungstoken war, indem speziell nach einem Anspruch von refreshin gesucht wird aud.
OAuth Client ID vs. JWT audClaim
Die OAuth-Client-ID ist völlig unabhängig und steht in keinem direkten Zusammenhang mit JWT- audAnsprü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- audAnspruch anzugeben .
aud REQUIRED for session_token. Contains the client_id of the client receiving the assertion.