3. Autorisierungsanfrage (Authorization Request)
Der authorization_details Autorisierungsanfrage-Parameter kann verwendet werden, um Autorisierungsanforderungen an allen Stellen zu spezifizieren, an denen der scope-Parameter für denselben Zweck verwendet wird. Beispiele umfassen:
- Autorisierungsanfragen wie in [RFC6749] spezifiziert
- Geräte-Autorisierungsanfragen wie in [RFC8628] spezifiziert
- Backchannel-Authentifizierungsanfragen wie in [OID-CIBA] definiert
Im Fall von Autorisierungsanfragen, wie in [RFC6749] definiert, KÖNNEN Implementierer die Verwendung von Pushed Authorization Requests [RFC9126] in Betracht ziehen, um die Sicherheit, Privatsphäre und Zuverlässigkeit des Ablaufs zu verbessern. Siehe Abschnitte 12, 13 und 11.4 für Details.
Die Parameter-Kodierung wird durch den jeweiligen Kontext bestimmt. Im Kontext einer Autorisierungsanfrage gemäß [RFC6749] wird der Parameter unter Verwendung des application/x-www-form-urlencoded Formats des serialisierten JSON kodiert, wie in Abbildung 8 gezeigt, unter Verwendung des Beispiels aus Abschnitt 2 (Zeilenumbrüche nur zu Anzeigezwecken):
GET /authorize?response_type=code
&client_id=s6BhdRkqt3
&state=af0ifjsldkj
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
&code_challenge_method=S256
&code_challenge=K2-ltc83acc4h0c9w6ESC_rEMTJ3bwc-uCHaoeK1t8U
&authorization_details=%5B%7B%22type%22%3A%22account%5Finformation%22%2C%22actions%22%3A%5B%22list%5Faccounts%22%2C%22read%5Fbalances%22%2C%22read%5Ftransactions%22%5D%2C%22locations%22%3A%5B%22https%3A%2F%2Fexample%2Ecom%2Faccounts%22%5D%7D%2C%7B%22type%22%3A%22payment%5Finitiation%22%2C%22actions%22%3A%5B%22initiate%22%2C%22status%22%2C%22cancel%22%5D%2C%22locations%22%3A%5B%22https%3A%2F%2Fexample%2Ecom%2Fpayments%22%5D%2C%22instructedAmount%22%3A%7B%22currency%22%3A%22EUR%22%2C%22amount%22%3A%22123%2E50%22%7D%2C%22creditorName%22%3A%22Merchant%20A%22%2C%22creditorAccount%22%3A%7B%22iban%22%3A%22DE02100100109307118603%22%7D%2C%22remittanceInformationUnstructured%22%3A%22Ref%20Number%20Merchant%22%7D%5D HTTP/1.1
Host: server.example.com
Basierend auf den im authorization_details Parameter bereitgestellten Daten wird der AS den Benutzer um Zustimmung zu den angeforderten Zugriffsberechtigungen bitten.
Hinweis: Der Benutzer kann auch eine Teilmenge der angeforderten Autorisierungsdetails gewähren.
3.1. Beziehung zum "scope"-Parameter (Relationship to the "scope" Parameter)
authorization_details und scope können in derselben Autorisierungsanfrage verwendet werden, um unabhängige Autorisierungsanforderungen zu tragen. Die kombinierte Verwendung von authorization_details und scope wird von dieser Spezifikation teilweise unterstützt, um es bestehenden OAuth-basierten Anwendungen zu ermöglichen, schrittweise zur ausschließlichen Verwendung von authorization_details zu migrieren. Es wird EMPFOHLEN (RECOMMENDED), dass eine gegebene API nur eine Form der Anforderungsspezifikation verwendet.
Der AS MUSS beide Anforderungssätze in Kombination miteinander für die gegebene Autorisierungsanfrage verarbeiten. Die Details, wie der AS diese Parameter kombiniert, sind spezifisch für die geschützten APIs und außerhalb des Umfangs dieser Spezifikation.
Beim Sammeln der Benutzerzustimmung MUSS der AS die fusionierte Menge von Anforderungen präsentieren, die durch die Autorisierungsanfrage dargestellt wird.
Wenn der Ressourcenbesitzer dem Client den angeforderten Zugriff gewährt, wird der AS dem Client Token ausstellen, die mit den jeweiligen authorization_details (und Scope-Werten, falls zutreffend) verbunden sind.
3.2. Beziehung zum "resource"-Parameter (Relationship to the "resource" Parameter)
Der resource Autorisierungsanfrage-Parameter, wie in [RFC8707] definiert, kann verwendet werden, um weiter zu bestimmen, auf welche Ressourcen der angeforderte Scope angewendet werden kann. Der resource Parameter hat keinen Einfluss darauf, wie der AS den authorization_details Autorisierungsanfrage-Parameter verarbeitet.