Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
S’applique à :
Cercle vert des locataires de main-d’œuvre
Locataires externes (en savoir plus)
Ce tutoriel est la dernière partie d’une série qui illustre la création et le test d’une API web protégée inscrite dans un locataire Microsoft Entra. Dans la partie 1 de cette série, vous avez créé une API web ASP.NET Core et protégé ses points de terminaison. Vous allez maintenant créer une application démon légère, la définir dans votre compte, et utiliser ce démon pour tester l'API web que vous avez créée.
Dans ce tutoriel, vous allez :
- Inscrire une application démon
- Attribuer un rôle d’application à votre application démon
- Créer votre application démon
- Exécuter votre application démon pour appeler l’API web protégée
Conditions préalables
- Si ce n’est déjà fait, suivez le tutoriel : Créer et protéger une API web ASP.NET Core avec la plateforme d’identités Microsoft
Inscrire l’application démon
Les étapes suivantes montrent comment inscrire votre application démon dans le centre d’administration Microsoft Entra :
Connectez-vous au Centre d’administration Microsoft Entra en tant que développeur d’applications au moins.
Si vous avez accès à plusieurs comptes, utilisez l'icône Paramètres
dans le menu supérieur pour passer à votre compte externe à partir du menu Répertoires + abonnements .Accédez auxinscriptions d’application>.
Sélectionnez + Nouvelle inscription.
Dans la page Inscrire une application qui s’affiche, entrez les informations d’inscription de votre application :
Dans la section Nom , entrez un nom d’application explicite qui sera affiché aux utilisateurs de l’application, par exemple ciam-client-app.
Sous Types de comptes pris en charge, sélectionnez Comptes dans cet annuaire organisationnel uniquement.
Sélectionnez Inscrire.
Le volet Vue d’ensemble de l’application s’affiche lorsque l’inscription est terminée. Enregistrez l’ID d’annuaire
(locataire) et l’ID d’application (client)à utiliser dans le code source de votre application.
Créez un secret client pour l’application inscrite. L’application utilise la clé secrète client pour prouver son identité lorsqu’elle demande des jetons :
- Dans la page Inscriptions d’applications , sélectionnez l’application que vous avez créée (par exemple, la clé secrète client d’application web) pour ouvrir sa page Vue d’ensemble .
- Sous Gérer, sélectionnez Certificats et secrets>clés secrètes> clientNouveau secret client.
- Dans la zone Description , entrez une description pour la clé secrète client (par exemple, clé secrète client d’application web).
- Sous Expire, sélectionnez une durée pendant laquelle le secret est valide (conformément aux règles de sécurité de votre organisation), puis sélectionnez Ajouter.
- Enregistrez la valeur du secret. Vous utilisez cette valeur pour la configuration dans une étape ultérieure. La valeur du secret ne sera plus affichée et n’est récupérable par aucun moyen, une fois que vous vous éloignez des certificats et des secrets. Veillez à l’enregistrer.
Attribuer un rôle d’application à votre application démon
Les applications qui s’authentifient elles-mêmes sans utilisateur nécessitent des autorisations d’application (également appelées rôles). Ces autorisations permettent à l’application elle-même d’accéder directement aux ressources. En revanche, si nous testions l’API avec un utilisateur connecté, nous assignions des autorisations déléguées (étendues). Les autorisations déléguées permettent à l’application d’agir pour le compte de l’utilisateur, limitée aux droits d’accès de l’utilisateur. Procédez comme suit pour attribuer des autorisations d’application à l’application démon :
Dans la page Inscriptions d’applications , sélectionnez l’application que vous avez créée, telle que ciam-client-app.
Sous Gérer, sélectionnez autorisations d’API.
Sous Autorisations configurées, sélectionnez Ajouter une autorisation.
Sélectionnez l'onglet APIs que mon organisation utilise.
Dans la liste des API, sélectionnez l’API telle que ciam-ToDoList-api.
Sélectionnez l’option Autorisations d’application . Nous sélectionnons cette option, car l’application se connecte en tant que telle, mais pas au nom d’un utilisateur.
Dans la liste des autorisations, sélectionnez TodoList.Read.All, ToDoList.ReadWrite.All (utilisez la zone de recherche si nécessaire).
Sélectionnez le bouton Ajouter des autorisations .
À ce stade, vous avez attribué les autorisations correctement. Toutefois, étant donné que l’application démon ne permet pas aux utilisateurs d’interagir avec elle, les utilisateurs eux-mêmes ne peuvent pas consentir à ces autorisations. Pour résoudre ce problème, en tant qu’administrateur, vous devez consentir à ces autorisations au nom de tous les utilisateurs du locataire :
- Sélectionnez Accorder le consentement administrateur pour <le nom> de votre locataire, puis sélectionnez Oui.
- Sélectionnez Actualiser, puis vérifiez que le nom accordé pour <votre locataire> apparaît sous État pour les deux autorisations.
Créer une application démon
Initialisez une application console .NET et accédez à son dossier racine :
dotnet new console -o MyTestApp cd MyTestAppInstallez MSAL.NET pour faciliter la gestion de l’authentification en exécutant la commande suivante :
dotnet add package Microsoft.Identity.ClientExécutez votre projet d’API et notez le port sur lequel il s’exécute.
Ouvrez le fichier Program.cs et remplacez le code « Hello world » par le code suivant.
using System; using System.Net.Http; using System.Net.Http.Headers; HttpClient client = new HttpClient(); var response = await client.GetAsync("http://localhost:<your-api-port>/api/todolist"); Console.WriteLine("Your response is: " + response.StatusCode);Accédez au répertoire racine de l’application démon et exécutez l’application à l’aide de la commande
dotnet run. Ce code envoie une requête sans jeton d’accès. La chaîne doit s’afficher : Votre réponse est : non autorisée imprimée dans votre console.Supprimez le code à l’étape 4 et remplacez-le par ce qui suit pour tester votre API en envoyant une requête avec un jeton d’accès valide. Cette application de fond utilise le flux d'authentification client pour acquérir un jeton d’accès afin de s'authentifier sans interaction de l'utilisateur.
using Microsoft.Identity.Client; using System; using System.Net.Http; using System.Net.Http.Headers; HttpClient client = new HttpClient(); var clientId = "<your-daemon-app-client-id>"; var clientSecret = "<your-daemon-app-secret>"; var scopes = new[] {"api://<your-web-api-application-id>/.default"}; var tenantId = "<your-tenant-id>"; //Use in workforce tenant configuration var tenantName = "<your-tenant-name>"; //Use in external tenant configuration var authority = $"https://login.microsoftonline.com/{tenantId}"; // Use "https://{tenantName}.ciamlogin.com" for external tenant configuration var app = ConfidentialClientApplicationBuilder .Create(clientId) .WithAuthority(authority) .WithClientSecret(clientSecret) .Build(); var result = await app.AcquireTokenForClient(new string[] { scopes }).ExecuteAsync(); Console.WriteLine($"Access Token: {result.AccessToken}"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); var response = await client.GetAsync("http://localhost:/<your-api-port>/api/todolist"); var content = await response.Content.ReadAsStringAsync(); Console.WriteLine("Your response is: " + response.StatusCode); Console.WriteLine(content);Remplacez les espaces réservés dans le code par l’ID client de votre application démon, le secret, l’ID d’application d’API web et le nom du locataire.
- Pour les locataires externes, utilisez l’autorité sous la forme suivante :
"https://{tenantName}.ciamlogin.com/" - Pour les locataires du personnel, utilisez l’autorité sous la forme suivante :
"https://login.microsoftonline.com/{tenantId}"
- Pour les locataires externes, utilisez l’autorité sous la forme suivante :
Accédez au répertoire racine de l’application démon et exécutez l’application à l’aide de la commande
dotnet run. Ce code envoie une requête avec un jeton d’accès valide. Vous devriez voir la chaîne : Votre réponse est : OK imprimée dans votre console.