3. Demande d'Autorisation (Authorization Request)
Le paramètre de demande d'autorisation authorization_details peut être utilisé pour spécifier les exigences d'autorisation dans tous les endroits où le paramètre scope est utilisé dans le même but, exemples incluent:
- les demandes d'autorisation comme spécifié dans [RFC6749]
- les demandes d'autorisation d'appareil comme spécifié dans [RFC8628]
- les demandes d'authentification en canal arrière comme défini dans [OID-CIBA]
Dans le cas des demandes d'autorisation telles que définies dans [RFC6749], les implémenteurs PEUVENT considérer l'utilisation de demandes d'autorisation poussées [RFC9126] pour améliorer la sécurité, la confidentialité et la fiabilité du flux. Voir les Sections 12, 13 et 11.4 pour plus de détails.
L'encodage des paramètres est déterminé par le contexte respectif. Dans le contexte d'une demande d'autorisation selon [RFC6749], le paramètre est encodé en utilisant le format application/x-www-form-urlencoded du JSON sérialisé comme indiqué dans la Figure 8, en utilisant l'exemple de la Section 2 (sauts de ligne à des fins d'affichage uniquement):
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
Sur la base des données fournies dans le paramètre authorization_details, l'AS demandera à l'utilisateur le consentement pour les autorisations d'accès demandées.
Note: L'utilisateur peut également accorder un sous-ensemble des détails d'autorisation demandés.
3.1. Relation avec le Paramètre "scope" (Relationship to the "scope" Parameter)
authorization_details et scope peuvent être utilisés dans la même demande d'autorisation pour porter des exigences d'autorisation indépendantes. L'utilisation combinée de authorization_details et scope est supportée par cette spécification en partie pour permettre aux applications existantes basées sur OAuth de migrer progressivement vers l'utilisation exclusive de authorization_details. Il est RECOMMANDÉ qu'une API donnée n'utilise qu'une seule forme de spécification d'exigence.
L'AS DOIT traiter les deux ensembles d'exigences en combinaison l'un avec l'autre pour la demande d'autorisation donnée. Les détails de la façon dont l'AS combine ces paramètres sont spécifiques aux API protégées et en dehors de la portée de cette spécification.
Lors de la collecte du consentement de l'utilisateur, l'AS DOIT présenter l'ensemble fusionné des exigences représentées par la demande d'autorisation.
Si le propriétaire de la ressource accorde au client l'accès demandé, l'AS émettra des jetons au client qui sont associés aux authorization_details respectifs (et aux valeurs de scope, le cas échéant).
3.2. Relation avec le Paramètre "resource" (Relationship to the "resource" Parameter)
Le paramètre de demande d'autorisation resource, tel que défini dans [RFC8707], peut être utilisé pour déterminer davantage les ressources où le scope demandé peut être appliqué. Le paramètre resource n'a aucun impact sur la façon dont l'AS traite le paramètre de demande d'autorisation authorization_details.