Tester votre API protégée
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 externe. Dans la partie 1 de cette série, vous avez créé une API web ASP.NET Core et vous avez protégé ses points de terminaison. Dans cette dernière étape, vous allez inscrire l’application démon et tester votre API.
Dans ce tutoriel, vous allez apprendre à :
- Tester une API web protégée à l’aide d’une application démon légère qui appelle l’API web
Prérequis
Tutoriel : Sécuriser une API web ASP.NET inscrite dans un locataire externe
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 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 d’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-client-app.
Sous Types de comptes pris en charge, sélectionnez Comptes dans cet annuaire organisationnel uniquement.
Sélectionnez Inscription.
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.
Créez un secret client pour l’application inscrite. L’application utilise la clé secrète client pour prouver son identité quand elle demande des jetons.
- 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 Certificats et secrets.
- Sélectionnez Nouveau secret client.
- Entrez une description pour la clé secrète client dans la zone Description (par exemple clé secrète client ciam).
- Sous Expire, sélectionnez la durée de validité de la clé secrète (en fonction des règles de sécurité de votre organisation), puis sélectionnez Ajouter.
- Enregistrez la Valeur du secret. Vous utiliserez cette valeur pour la configuration dans une étape ultérieure. La valeur du secret ne sera plus affichée et sera irrécupérable une fois que vous quittez les Certificats et secrets. Veillez à l’enregistrer.
Affecter un rôle d’application à votre application démon
Les applications qui s’authentifient par elles-mêmes nécessitent des autorisations d’application.
Dans la page Inscriptions des applications, sélectionnez l’application que vous avez créée, par exemple ciam-client-app.
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 de l’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 <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.
Écrire du code
Initialiser une application console .NET et accéder à son dossier racine
dotnet new console -o MyTestApp cd MyTestApp
Installez MSAL pour vous aider à gérer l’authentification en exécutant la commande suivante :
dotnet add package Microsoft.Identity.Client
Exé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("https://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. Vous devez voir la chaîne Your response is: Unauthorized imprimée sur 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.
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 tenantName= "<your-tenant-name>"; var authority = $"https://{tenantName}.ciamlogin.com/"; var app = ConfidentialClientApplicationBuilder .Create(clientId) .WithAuthority(authority) .WithClientSecret(clientSecret) .Build(); var result = await app.AcquireTokenForClient(scopes).ExecuteAsync(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); var response = await client.GetAsync("https://localhost:44351/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 avec un jeton d’accès valide. Vous devez voir la chaîne Your response is: OK imprimée sur votre console.