3. Richiesta di Autorizzazione (Authorization Request)
Il parametro di richiesta di autorizzazione authorization_details può essere utilizzato per specificare i requisiti di autorizzazione in tutti i luoghi in cui il parametro scope viene utilizzato per lo stesso scopo, gli esempi includono:
- richieste di autorizzazione come specificato in [RFC6749]
- richieste di autorizzazione del dispositivo come specificato in [RFC8628]
- richieste di autenticazione backchannel come definito in [OID-CIBA]
Nel caso di richieste di autorizzazione come definito in [RFC6749], gli implementatori POSSONO considerare l'utilizzo di richieste di autorizzazione pushed [RFC9126] per migliorare la sicurezza, la privacy e l'affidabilità del flusso. Vedere le Sezioni 12, 13 e 11.4 per i dettagli.
La codifica dei parametri è determinata dal rispettivo contesto. Nel contesto di una richiesta di autorizzazione secondo [RFC6749], il parametro è codificato utilizzando il formato application/x-www-form-urlencoded del JSON serializzato come mostrato nella Figura 8, utilizzando l'esempio della Sezione 2 (interruzioni di riga solo per scopi di visualizzazione):
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
Sulla base dei dati forniti nel parametro authorization_details, l'AS chiederà all'utente il consenso per le autorizzazioni di accesso richieste.
Nota: L'utente può anche concedere un sottoinsieme dei dettagli di autorizzazione richiesti.
3.1. Relazione con il Parametro "scope" (Relationship to the "scope" Parameter)
authorization_details e scope possono essere utilizzati nella stessa richiesta di autorizzazione per trasportare requisiti di autorizzazione indipendenti. L'uso combinato di authorization_details e scope è supportato da questa specifica in parte per consentire alle applicazioni esistenti basate su OAuth di migrare progressivamente verso l'uso esclusivo di authorization_details. Si RACCOMANDA (RECOMMENDED) che una data API utilizzi solo una forma di specifica dei requisiti.
L'AS DEVE elaborare entrambi gli insiemi di requisiti in combinazione tra loro per la richiesta di autorizzazione data. I dettagli di come l'AS combina questi parametri sono specifici delle API protette e al di fuori dell'ambito di questa specifica.
Durante la raccolta del consenso dell'utente, l'AS DEVE presentare l'insieme unito di requisiti rappresentati dalla richiesta di autorizzazione.
Se il proprietario della risorsa concede al client l'accesso richiesto, l'AS emetterà token al client che sono associati ai rispettivi authorization_details (e valori di scope, se applicabile).
3.2. Relazione con il Parametro "resource" (Relationship to the "resource" Parameter)
Il parametro di richiesta di autorizzazione resource, come definito in [RFC8707], può essere utilizzato per determinare ulteriormente le risorse dove può essere applicato lo scope richiesto. Il parametro resource non ha alcun impatto sul modo in cui l'AS elabora il parametro di richiesta di autorizzazione authorization_details.