6. Initiating the Authorization Request from a Native App (Avvio della richiesta di autorizzazione da un'applicazione nativa)
Le applicazioni native che necessitano di autorizzazione utente creano un URI di richiesta di autorizzazione con il tipo di concessione del codice di autorizzazione (Authorization Code Grant Type) secondo la Sezione 4.1 di OAuth 2.0 [RFC6749], utilizzando un URI di reindirizzamento in grado di essere ricevuto dall'applicazione nativa.
La funzione dell'URI di reindirizzamento per una richiesta di autorizzazione di un'applicazione nativa è simile a quella di una richiesta di autorizzazione basata sul web. Anziché restituire la risposta di autorizzazione al server del client OAuth, l'URI di reindirizzamento utilizzato da un'applicazione nativa restituisce la risposta all'app. Diverse opzioni per un URI di reindirizzamento che restituirà la risposta di autorizzazione all'applicazione nativa su diverse piattaforme sono documentate nella Sezione 7. Qualsiasi URI di reindirizzamento che consenta all'app di ricevere l'URI e ispezionare i suoi parametri è valido.
I client di applicazioni native pubbliche devono (MUST) implementare l'estensione Proof Key for Code Exchange (PKCE [RFC7636]) per OAuth, e i server di autorizzazione devono (MUST) supportare PKCE per tali client, per i motivi dettagliati nella Sezione 8.1.
Dopo aver costruito l'URI di richiesta di autorizzazione, l'app utilizza API specifiche della piattaforma per aprire l'URI in un user-agent esterno. Tipicamente, il user-agent esterno utilizzato è il browser predefinito, ovvero l'applicazione configurata per gestire gli URI con schema "http" e "https" sul sistema; tuttavia, diversi criteri di selezione del browser e altre categorie di user-agent esterni possono (MAY) essere utilizzati.
Questa migliore pratica si concentra sul browser come user-agent esterno raccomandato (RECOMMENDED) per le applicazioni native. Un user-agent esterno progettato specificamente per l'autorizzazione utente e in grado di elaborare richieste e risposte di autorizzazione come un browser può (MAY) anche essere utilizzato. Altri user-agent esterni, come un'applicazione nativa fornita dal server di autorizzazione, possono soddisfare i criteri stabiliti in questa migliore pratica, incluso l'utilizzo delle stesse proprietà dell'URI di reindirizzamento, ma il loro utilizzo è fuori dall'ambito di questa specifica.
Alcune piattaforme supportano una funzionalità del browser nota come "schede del browser integrate nell'app" (In-App Browser Tabs), in cui un'app può presentare una scheda del browser all'interno del contesto dell'app senza cambiare app, ma mantenendo comunque i principali vantaggi del browser come uno stato di autenticazione condiviso e un contesto di sicurezza. Sulle piattaforme in cui sono supportate, è raccomandato (RECOMMENDED), per ragioni di usabilità, che le app utilizzino schede del browser integrate nell'app per la richiesta di autorizzazione.