Démarrage rapide : Protéger une API web ASP.NET Core avec la plateforme d’identités Microsoft
Ce guide de démarrage rapide utilise un exemple de code d’API web ASP.NET Core pour montrer comment restreindre l’accès aux ressources aux comptes autorisés. L’exemple utilise l’Identité ASP.NET Core qui interagit avec la bibliothèque d’authentification Microsoft (MSAL) pour gérer l’authentification.
Prérequis
- Compte Azure avec un abonnement actif. Si vous n’en avez pas déjà un, créez un compte gratuitement.
- Exigence minimale de SDK .NET 8.0
- Visual Studio 2022 ou Visual Studio Code
Inscrire l’application et enregistrer les identificateurs
Conseil
Les étapes décrites dans cet article peuvent varier légèrement en fonction du portail de départ.
Pour terminer l’inscription, fournissez un nom à l’application et spécifiez les types de comptes pris en charge. Une fois l’inscription terminée, la page Vue d’ensemble de l’application affiche les identificateurs nécessaires dans le code source de l’application.
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 le tenant dans lequel vous voulez inscrire l’application à partir du menu Répertoires + abonnements.
Accédez à Identité>Applications>Inscriptions d’applications.
Sélectionnez Nouvelle inscription.
Attribuez un Nom à l’application, par exemple NewWebAPI1.
Pour les Types de comptes pris en charge, sélectionnez Comptes dans cet annuaire organisationnel. Pour plus d’informations sur les différents types de comptes, sélectionnez l’option M’aider à choisir.
Sélectionnez Inscription.
Le volet Vue d’ensemble de l’application s’affiche à la fin de l’inscription. Inscrivez l’ID de l’annuaire (locataire) et l’ID d’application (client) à utiliser dans le code source de votre application.
Notes
Il est possible de modifier les types de comptes pris en charge. Pour cela, consultez l’article Modifier les comptes pris en charge par une application.
Exposer une API
Une fois l’API inscrite, vous pouvez configurer son autorisation en définissant les étendues qu’elle expose aux applications clientes. Les applications clientes demandent l’autorisation d’effectuer des opérations en passant un jeton d’accès et les requêtes associées à l’API web protégée. Votre API web effectue ensuite l’opération demandée uniquement si le jeton d’accès qu’elle reçoit contient les étendues nécessaires.
Sous Gérer, sélectionnez Exposer une API > Ajouter une étendue. Acceptez l’URI d’ID d’application
(api://{clientId})
proposée en sélectionnant Enregistrer et continuer.{clientId}
est la valeur enregistrée depuis la page Vue d’ensemble. Entrez ensuite les informations suivantes :- Pour Nom de l’étendue, entrez
Forecast.Read
. - Pour Qui peut donner son consentement, vérifiez que l’option Administrateurs et utilisateurs est sélectionnée.
- Dans la zone Nom d’affichage du consentement administrateur, entrez
Read forecast data
. - Dans Description du consentement de l’administrateur, entrez
Allows the application to read weather forecast data
. - Dans la zone Nom d’affichage du consentement utilisateur, entrez
Read forecast data
. - Dans la zone Description du consentement de l’utilisateur, entrez
Allows the application to read weather forecast data
. - Vérifiez que l’État défini est Activé.
- Pour Nom de l’étendue, entrez
Sélectionnez Ajouter une étendue. Si l’étendue a été entrée correctement, elle figure dans le volet Exposer une API.
Cloner ou télécharger l’exemple d’application
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-docs-code-dotnet.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 l’exemple d’application ASP.NET Core
Dans votre IDE, ouvrez le dossier de projet ms-identity-docs-code-dotnet/web-api, qui contient l’exemple.
Ouvrez le fichier
appsettings.json
, qui contient l’extrait de code suivant :{ "AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "Enter the tenant ID obtained from the Microsoft Entra admin center", "ClientId": "Enter the client ID obtained from the Microsoft Entra admin center", "Scopes": "Forecast.Read" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
Recherchez la
key
suivante :ClientId
– Identificateur de l’application, également appelé client. Remplacez le textevalue
entre guillemets par l’ID d’application (client) enregistré précédemment à partir de la page Vue d’ensemble de l’application inscrite.TenantId
– Identificateur du locataire où l’application est inscrite. Remplacez le textevalue
entre guillemets par l’ID de l’annuaire (locataire) enregistré précédemment à partir de la page Vue d’ensemble de l’application inscrite.
Exécuter l’exemple d’application
Exécutez la commande suivante pour démarrer l’application :
dotnet run
Un résultat semblable à l’exemple suivant s’affiche :
... info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:{port} ...
Enregistrez le numéro de port dans l’URL
http://localhost:{port}
.Pour vérifier que le point de terminaison est protégé, mettez à jour l’URL de base dans la commande cURL suivante pour qu’elle corresponde à celle que vous avez reçue à l’étape précédente, puis exécutez la commande :
curl -X GET https://localhost:5001/weatherforecast -ki
La réponse attendue est 401 Non autorisée avec une sortie similaire à :
user@host:~$ curl -X GET https://localhost:5001/weatherforecast -ki HTTP/2 401 date: Fri, 23 Sep 2023 23:34:24 GMT server: Kestrel www-authenticate: Bearer content-length: 0
Étapes suivantes
Passez à l’article suivant pour apprendre à appeler l’API web protégée à l’aide de cURL.