Connecter des utilisateurs et appeler une API dans un exemple d’application mobile Android à l’aide de l’authentification native
Cet article montre comment configurer un exemple d’application mobile Android pour appeler une API web ASP.NET Core.
Prérequis
Inscrire une application d’API web
Connectez-vous au centre d’administration de Microsoft Entra au minimum en tant que Développeur d’application.
Si vous avez accès à plusieurs tenants, utilisez l’icône Paramètres dans le menu supérieur pour basculer vers votre tenant externe depuis le menu Répertoires + abonnements.
Accédez à Identité>Applications>Inscriptions d’applications.
Sélectionnez + Nouvelle inscription.
Dans la page Inscrire une application qui s’affiche, entrez les informations relatives à l’inscription de votre application :
Dans la section Nom, entrez un nom d’application significatif qui s’affiche pour les utilisateurs de l’application, par exemple, ciam-ToDoList-api.
Sous Types de comptes pris en charge, sélectionnez Comptes dans cet annuaire organisationnel uniquement.
Sélectionnez Inscrire pour créer l’application.
Le Vue d’ensemble de l’application s’affiche une fois l’inscription terminée. Enregistrez l’ID du répertoire (locataire) et l’ID d’application (client) à utiliser dans le code source de votre application.
Configurer des étendues d’API
Une API doit publier au moins une étendue, également appelée Autorisation déléguée, pour que les applications clientes obtiennent avec succès un jeton d’accès pour un utilisateur. Pour publier une étendue, effectuez ces étapes :
Dans la page Inscriptions des applications, sélectionnez l’application API que vous avez créée (ciam-ToDoList-api) pour ouvrir sa page Vue d’ensemble.
Sous Gérer, sélectionnez Exposer une API.
En haut de la page, en regard de URI d’ID d’application, sélectionnez le lien Ajouter pour générer un URI unique pour cette application.
Acceptez l’URI d’ID d’application proposé, tel que
api://{clientId}
, puis sélectionnez Enregistrer. Lorsque votre application web demande un jeton d’accès pour l’API web, elle ajoute l’URI comme préfixe pour chaque étendue que vous définissez pour l’API.Sous Étendues définies par cette API, sélectionnez Ajouter une étendue.
Entrez les valeurs suivantes qui définit l’accès en lecture à l’API, puis sélectionnez Ajouter une étendue pour sauvegarder vos modifications :
Propriété active Nom de l’étendue ToDoList.Read Qui peut donner son consentement Administrateurs uniquement Nom d’affichage du consentement administrateur Lire la liste des tâches de l’utilisateur à l’aide de « ToDoListApi » Description du consentement de l'administrateur Autoriser l’application à lire la liste de tâches de l’utilisateur à l’aide de « TodoListApi ». State Activé Sélectionnez à nouveau Ajouter une étendue, puis entrez les valeurs suivantes qui définit l’étendue en lecture et en écriture sur l’API. Sélectionnez Ajouter une étendue pour enregistrer vos changements :
Propriété active Nom de l’étendue ToDoList.ReadWrite Qui peut donner son consentement Administrateurs uniquement Nom d’affichage du consentement administrateur Lire et écrire la liste ToDo de l’utilisateur à l’aide de « ToDoListApi » Description du consentement de l'administrateur Permet à l’application de lire et écrire la liste ToDo de l’utilisateur à l’aide de « ToDoListApi » State Activé Sous Gérer, sélectionnez Manifeste pour ouvrir l’éditeur de manifeste d’API.
Définissez la propriété
accessTokenAcceptedVersion
sur2
.Sélectionnez Enregistrer.
Découvrez-en plus sur le principe du privilège minimum lors de la publication d’autorisations pour une API web.
Configurer les rôles d’application
Une API doit publier au moins un rôle d’application pour les applications, également appelé Autorisation d’application, pour que les applications clientes obtiennent un jeton d’accès en leur nom. Les autorisations d’application sont le type d’autorisations que les API doivent publier lorsqu’elles souhaitent permettre aux applications clientes de s’authentifier correctement en tant qu’elles-mêmes et qu’elles n’ont pas besoin de connecter des utilisateurs. Pour publier une autorisation d'application, procédez comme suit :
Dans la page Inscriptions d’applications, sélectionnez l’application que vous avez créée (par exemple, ciam-ToDoList-api) pour ouvrir sa page Vue d’ensemble.
Sous Gérer, sélectionnez Rôles d’applications.
Sélectionnez Créer un rôle d'application, puis saisissez les valeurs suivantes, puis sélectionnez Appliquer pour enregistrer vos modifications :
Propriété Value Nom complet ToDoList.Read.All Types de membres autorisés Applications Valeur ToDoList.Read.All Description Autoriser l'application à lire la liste de tâches de chaque utilisateur à l'aide de 'TodoListApi' Sélectionnez à nouveau Créer un rôle d'application, puis saisissez les valeurs suivantes pour le deuxième rôle d'application, puis sélectionnez Appliquer pour enregistrer vos modifications :
Propriété Value Nom complet ToDoList.ReadWrite.All Types de membres autorisés Applications Valeur ToDoList.ReadWrite.All Description Autoriser l’application à lire et écrire la liste ToDo de chaque utilisateur à l’aide de « TodoListApi »
Configurer des revendications facultatives
Vous pouvez utiliser la revendication facultative idtyp pour aider l’API web à déterminer si un jeton est un jeton d’application ou un jeton application + utilisateur. Même si vous pouvez utiliser une combinaison de revendications scp et de rôles dans le même but, l’utilisation de la revendication idtyp est le moyen le plus simple de distinguer un jeton d’application d’un jeton application + utilisateur. Par exemple, la valeur de cette revendication est app lorsque le jeton est un jeton d'application uniquement.
Accorder des autorisations d’API à l’exemple d’application Android
Une fois que vous avez inscrit votre application cliente et votre API web et que vous avez exposé l’API en créant des étendues, vous pouvez configurer les autorisations du client sur l’API en effectuant les étapes suivantes :
Dans la page inscriptions d’applications, sélectionnez l’application que vous avez créée (par exemple, ciam-client-app) pour ouvrir sa page Vue d’ensemble.
Sous Gérer, sélectionnez Autorisations de l’API.
Sous Autorisations configurées, sélectionnez Ajouter une autorisation.
Sélectionnez l’onglet API utilisées par mon organisation.
Dans la liste des API, sélectionnez l’API, par exemple ciam-ToDoList-api.
Sélectionnez l’option Autorisations déléguées.
Dans la liste des autorisations, sélectionnez ToDoList.Read, ToDoList.ReadWrite (utilisez la zone de recherche si nécessaire).
Sélectionnez le bouton Ajouter des autorisations.
À ce stade, vous avez attribué les autorisations correctement. Toutefois, comme le locataire est celui d’un client, les utilisateurs consommateurs eux-mêmes ne peuvent pas donner leur consentement à ces autorisations. Pour résoudre ceci, en tant qu’administrateur, vous devez consentir à ces autorisations au nom de tous les utilisateurs du locataire :
Sélectionnez Accorder le consentement administrateur pour <nom de votre locataire>, puis sélectionnez Oui.
Sélectionnez Actualiser, puis vérifiez que Accordé pour <nom de votre locataire> s’affiche sous État pour les deux autorisations.
Dans la liste Autorisations configurées, sélectionnez les autorisations ToDoList.Read et ToDoList.ReadWrite, une par une, puis copiez l’URI complet de l’autorisation pour l’utiliser ultérieurement. L’URI d’autorisation complet ressemble à
api://{clientId}/{ToDoList.Read}
ouapi://{clientId}/{ToDoList.ReadWrite}
.
Cloner ou télécharger l’exemple d’API web
Pour obtenir l’exemple d’application, vous pouvez le cloner à partir de GitHub ou le télécharger sous la forme d’un fichier .zip.
Pour cloner l’exemple, ouvrez une invite de commandes, accédez à l’emplacement où vous souhaitez créer le projet, puis entrez la commande suivante :
git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git
Téléchargez le fichier .zip. Extrayez-la dans un chemin d’accès de fichier où la longueur du nom est inférieure à 260 caractères.
Configurer et exécuter un exemple d’API web
Dans votre éditeur de code, ouvrez le fichier
2-Authorization/1-call-own-api-aspnet-core-mvc/ToDoListAPI/appsettings.json
.Recherchez l’espace réservé :
Enter_the_Application_Id_Here
avec l’ID d’application (client) de l’application API web, copiée précédemment.Enter_the_Tenant_Id_Here
et remplacez-le par l’ID d’annuaire (locataire) que vous avez copié précédemment.Enter_the_Tenant_Subdomain_Here
et remplacez par le sous-domaine du répertoire (locataire). Par exemple, si votre domaine principal du locataire estcontoso.onmicrosoft.com
, utilisezcontoso
. Si vous ne disposez pas du nom de votre locataire, découvrez de quelle manière consulter les détails de votre locataire.
Vous devez héberger votre API web pour l’exemple d’application Android pour l’appeler. Suivez Démarrage rapide : déployer une application web ASP.NET pour déployer votre API web.
Configurer un exemple d’application mobile Android pour appeler l’API web
L’exemple vous permet de configurer plusieurs points de terminaison URL et ensembles d’étendues d’API Web. Dans ce cas, vous ne configurez qu’un seul point de terminaison URL d’API web et ses étendues associées.
Dans votre Android Studio, ouvrez le fichier
/app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/AccessApiFragment.kt
.Recherchez la propriété nommée
WEB_API_URL_1
et définissez l’URL sur votre API web.private const val WEB_API_URL_1 = "" // Developers should set the respective URL of their web API here
Recherchez la propriété nommée
scopesForAPI1
et définissez les étendues enregistrées dans Accorder des autorisations d’API à l’exemple d’application Android.private val scopesForAPI1 = listOf<String>() // Developers should set the respective scopes of their web API here. For example, private val scopes = listOf<String>("api://{clientId}/{ToDoList.Read}", "api://{clientId}/{ToDoList.ReadWrite}")
Exécuter un exemple d’application Android et appeler l’API web
Pour générer et exécuter votre application, procédez comme suit :
Dans la barre d’outils, sélectionnez votre application dans le menu Configurations d’exécution.
Dans le menu de l’appareil cible, sélectionnez l’appareil sur lequel vous souhaitez exécuter votre application.
Si aucun appareil n’est configuré, vous devez créer un appareil virtuel Android pour utiliser l’émulateur Android ou connecter un appareil physique.
Sélectionnez Bouton Exécuter. L’application s’ouvre sur l’e-mail et l’écran du code secret à usage unique.
Sélectionnez l’onglet API pour tester l’appel d’API. Un appel réussi à l’API web retourne http
200
, tandis que HTTP403
signifie un accès non autorisé.