6. Initiating the Authorization Request from a Native App (Initiation de la demande d'autorisation depuis une application native)
Les applications natives nécessitant une autorisation utilisateur créent un URI de demande d'autorisation avec le type de concessio de code d'autorisation (Authorization Code Grant Type) conformément à la Section 4.1 d'OAuth 2.0 [RFC6749], en utilisant un URI de redirection capable d'être reçu par l'application native.
La fonction de l'URI de redirection pour une demande d'autorisation d'application native est similaire à celle d'une demande d'autorisation basée sur le web. Plutôt que de retourner la réponse d'autorisation au serveur du client OAuth, l'URI de redirection utilisé par une application native retourne la réponse à l'application. Plusieurs options pour un URI de redirection qui retournera la réponse d'autorisation à l'application native sur différentes plateformes sont documentées dans la Section 7. Tout URI de redirection qui permet à l'application de recevoir l'URI et d'inspecter ses paramètres est viable.
Les clients d'applications natives publiques doivent (MUST) implémenter l'extension Proof Key for Code Exchange (PKCE [RFC7636]) pour OAuth, et les serveurs d'autorisation doivent (MUST) prendre en charge PKCE pour de tels clients, pour les raisons détaillées dans la Section 8.1.
Après avoir construit l'URI de demande d'autorisation, l'application utilise des API spécifiques à la plateforme pour ouvrir l'URI dans un agent utilisateur externe. Généralement, l'agent utilisateur externe utilisé est le navigateur par défaut, c'est-à-dire l'application configurée pour gérer les URI de schéma "http" et "https" sur le système ; cependant, différents critères de sélection de navigateur et d'autres catégories d'agents utilisateurs externes peuvent (MAY) être utilisés.
Cette meilleure pratique se concentre sur le navigateur comme agent utilisateur externe recommandé (RECOMMENDED) pour les applications natives. Un agent utilisateur externe conçu spécifiquement pour l'autorisation utilisateur et capable de traiter les demandes et réponses d'autorisation comme un navigateur peut (MAY) également être utilisé. D'autres agents utilisateurs externes, tels qu'une application native fournie par le serveur d'autorisation, peuvent répondre aux critères énoncés dans cette meilleure pratique, y compris l'utilisation des mêmes propriétés d'URI de redirection, mais leur utilisation est hors de portée de cette spécification.
Certaines plateformes prennent en charge une fonctionnalité de navigateur connue sous le nom d'"onglets de navigateur intégrés à l'application" (In-App Browser Tabs), où une application peut présenter un onglet du navigateur dans le contexte de l'application sans changer d'application, mais en conservant les principaux avantages du navigateur tels qu'un état d'authentification partagé et un contexte de sécurité. Sur les plateformes où ils sont pris en charge, il est recommandé (RECOMMENDED), pour des raisons de convivialité, que les applications utilisent des onglets de navigateur intégrés à l'application pour la demande d'autorisation.