Partager via


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

  1. Connectez-vous au centre d’administration de Microsoft Entra au minimum en tant que Développeur d’application.

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

  3. Accédez à Identité>Applications>Inscriptions d’applications.

  4. Sélectionnez + Nouvelle inscription.

  5. Dans la page Inscrire une application qui s’affiche, entrez les informations relatives à l’inscription de votre application :

    1. Dans la section Nom, entrez un nom d’application significatif qui s’affiche pour les utilisateurs de l’application, par exemple, ciam-ToDoList-api.

    2. Sous Types de comptes pris en charge, sélectionnez Comptes dans cet annuaire organisationnel uniquement.

  6. Sélectionnez Inscrire pour créer l’application.

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

  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é 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é
  7. 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é
  8. Sous Gérer, sélectionnez Manifeste pour ouvrir l’éditeur de manifeste d’API.

  9. Définissez la propriété accessTokenAcceptedVersion sur 2.

  10. 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 :

  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é 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'
  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é 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 :

  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 Autorisations de l’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. 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 :

    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 <nom de votre locataire> s’affiche 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 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

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

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

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

  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 Configurations d’exécution.

  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’e-mail et l’écran 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