Partager via


Connecter des utilisateurs et appeler une API dans un exemple d’application Android à l’aide de l’authentification native

S’applique à :Cercle blanc avec un symbole X gris. Locataires de main-d’œuvre Cercle vert avec un symbole de coche blanche. Locataires externes (en savoir plus)

Dans ce guide de démarrage rapide, vous allez apprendre à configurer un exemple d’application mobile Android pour appeler une API web ASP.NET Core.

Conditions préalables

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 les étapes suivantes :

  1. 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.

  2. Sous Gérer, sélectionnez Exposer une API.

  3. 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.

  4. 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.

  5. Sous Étendues définies par cette API, sélectionnez Ajouter une étendue.

  6. 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é Valeur
    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 ».
    État Activé
  7. Sélectionnez à nouveau Ajouter une étendue, puis entrez les valeurs suivantes qui définissent une portée d'accès en lecture et en écriture à l'API. Sélectionnez Ajouter une étendue pour enregistrer vos changements :

    Propriété Valeur
    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 »
    État Activé

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 propre 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 :

  1. 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.

  2. Sous Gérer, sélectionnez Rôles d’applications.

  3. Sélectionnez Créer un rôle d'application, puis saisissez les valeurs suivantes, puis sélectionnez Appliquer pour enregistrer vos modifications :

    Propriété Valeur
    Nom complet ToDoList.Read.All
    Types de membres autorisés Applications
    Valeur ToDoList.Read.All
    Descriptif Autoriser l'application à lire la liste de tâches de chaque utilisateur à l'aide de 'TodoListApi'
    Voulez-vous activer le rôle de cette application ? Maintenez cette option cochée
  4. 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é Valeur
    Nom complet ToDoList.ReadWrite.All
    Types de membres autorisés Applications
    Valeur ToDoList.ReadWrite.All
    Descriptif Autoriser l’application à lire et écrire la liste ToDo de chaque utilisateur à l’aide de « TodoListApi »
    Voulez-vous activer le rôle de cette application ? Maintenez cette option cochée

Configurer des revendications facultatives

Vous pouvez ajouter la revendication facultative idtyp pour aider l’API web à déterminer si un jeton est un jeton d’application ou une application + jeton utilisateur . Bien que vous puissiez utiliser une combinaison de revendications de scp et de rôles dans le même but, la revendication idtyp est le moyen le plus simple de distinguer un jeton d'application d'un jeton d'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 :

  1. 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.

  2. Sous Gérer, sélectionnez les autorisations d'API .

  3. Sous Autorisations configurées, sélectionnez Ajouter une autorisation.

  4. Sélectionnez l’onglet API utilisées par mon organisation.

  5. Dans la liste des API, sélectionnez l’API, par exemple ciam-ToDoList-api.

  6. Sélectionnez l’option Autorisations déléguées.

  7. Dans la liste des autorisations, sélectionnez ToDoList.Read, ToDoList.ReadWrite (utilisez la zone de recherche si nécessaire).

  8. Sélectionnez le bouton Ajouter des autorisations.

  9. À ce stade, vous avez attribué les autorisations correctement. Cependant, étant donné que le locataire est le locataire d'un client, les utilisateurs consommateurs eux-mêmes ne peuvent pas consentir à ces autorisations. Pour résoudre ce problème, vous, en tant qu’administrateur, devez donner votre consentement à ces autorisations pour le compte de tous les utilisateurs du client :

    1. Sélectionnez Accorder le consentement administrateur pour <nom de votre locataire>, puis sélectionnez Oui.

    2. Sélectionnez Actualiser, puis vérifiez que Accordé pour le <nom de votre locataire> apparaît sous État pour les deux autorisations.

  10. 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} ou api://{clientId}/{ToDoList.ReadWrite}.

Cloner ou télécharger un exemple d’API web

Pour obtenir l’exemple d’application, vous pouvez le cloner à partir de GitHub ou le télécharger en tant que fichier .zip.

  • Pour cloner l’exemple, ouvrez une invite de commandes et 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-le dans un chemin de fichier où la longueur du nom est inférieure à 260 caractères.

Configurer et exécuter un exemple d’API web

  1. Dans votre éditeur de code, ouvrez le fichier 2-Authorization/1-call-own-api-aspnet-core-mvc/ToDoListAPI/appsettings.json.

  2. Trouvez l’espace réservé :

    • Enter_the_Application_Id_Here et remplacez-le par l’ID d’application (client) de l’API web que vous avez 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-le par le sous-domaine du répertoire (locataire). Par exemple, si le domaine principal de votre locataire est contoso.onmicrosoft.com, utilisez contoso. 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 le guide de 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 d’URL d’API web et ses étendues associées.

  1. Dans votre Android Studio, ouvrez /app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/AccessApiFragment.kt le fichier.

  2. 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
    
  3. 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 :

  1. Dans la barre d’outils, sélectionnez votre application dans le menu Exécuter les configurations.

  2. 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.

  3. Sélectionnez Bouton Exécuter . L’application s’ouvre sur l’écran de l’e-mail et celui du code secret à usage unique.

  4. Sélectionnez l’onglet API pour tester l’appel d’API. Un appel réussi à l’API web retourne HTTP 200, tandis que HTTP 403 signifie un accès non autorisé.

Étapes suivantes