Che cos’è una richiesta di autorizzazione (authorization request)?
A seconda del contesto, il termine “richiesta di autorizzazione” (authorization request) può riferirsi a cose diverse. In questo articolo, ci concentreremo sulla definizione nella specifica OAuth 2.0 .
In OAuth 2.0, ci sono diversi tipi di concessione (flussi) che definiscono come un Client può ottenere l’autorizzazione da un utente per accedere a risorse protette.
![Nota] Le “richieste di autorizzazione” (authorization requests) sono spesso confuse con le “richieste di autenticazione” (authentication requests) nel contesto di OpenID Connect (OIDC) . Vedi Richiesta di autenticazione (Authentication request) per i dettagli specifici di OIDC.
Come funziona una richiesta di autorizzazione (authorization request)?
Quando un client (applicazione) vuole accedere a risorse protette per conto di un utente, avvia una richiesta di autorizzazione al Server di autorizzazione . Il client dovrebbe indicare il tipo di concessione richiesto insieme ai parametri necessari nella richiesta.
Ecco alcuni tipi di concessione (flussi) tipici per l’autorizzazione degli utenti finali in OAuth 2.0:
- Flusso del codice di autorizzazione (Authorization code flow) : Il flusso più raccomandato per l’autorizzazione degli utenti finali. È solitamente utilizzato con Proof Key for Code Exchange (PKCE) per una maggiore sicurezza ed è adatto per la maggior parte delle applicazioni.
- Flusso implicito (Implicit flow) : Un flusso semplificato che è deprecato in OAuth 2.1 a causa di problemi di sicurezza.
- Concessione delle credenziali della password del proprietario della risorsa (ROPC) : Un tipo di concessione (flusso) in cui le credenziali dell’utente sono scambiate direttamente per un access token. Questo flusso non è raccomandato a causa dei rischi per la sicurezza.
Ci sono anche altre estensioni, come il Flusso del dispositivo per dispositivi con capacità di input limitate. Ogni flusso ha le proprie caratteristiche e casi d’uso. Per la maggior parte delle applicazioni web, il flusso del codice di autorizzazione è la scelta raccomandata.
L’autorizzazione Comunicazione machine-to-machine è tipicamente eseguita utilizzando il Flusso delle credenziali del client (Client credentials flow) che non coinvolge l’interazione dell’utente.
Ad esempio, un client (applicazione) può richiedere l’autorizzazione per accedere ai file di Google Drive di un utente. Ecco un diagramma di sequenza semplificato del flusso del codice di autorizzazione:
Una volta ottenuto l’ Token di accesso (Access token) , il client può usarlo per accedere ai file di Google Drive dell’utente per conto dell’utente.
Parametri chiave in una richiesta di autorizzazione (authorization request)
La richiesta di autorizzazione OAuth 2.0 include tipicamente i seguenti parametri:
response_type
: Il tipo di risposta che il client si aspetta. I valori comuni sonocode
per il flusso del codice di autorizzazione etoken
per il flusso implicito.client_id
: L’identificatore del client emesso dal server di autorizzazione.redirect_uri
: L’URI dove il server di autorizzazione invia l’utente dopo il processo di autorizzazione.scope
: Gli scope (permessi) richiesti per l’access token.resource
: Il parametro opzionale che specifica il Indicatore di risorsa per le risorse richieste. Il server di autorizzazione deve supportare RFC 8707 per utilizzare questo parametro.
I parametri sopra elencati non sono esaustivi. I parametri effettivi e i loro valori dipendono dal tipo di concessione e dai requisiti specifici dell’applicazione.