Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : Locataires de main-d’œuvre
Locataires externes (en savoir plus)
Ce tutoriel montre comment appeler une API web protégée à partir d’une application démon .NET. Vous activez l’application démon cliente pour acquérir un jeton d’accès à l’aide de sa propre identité, puis appelez l’API web. Dans notre cas, nous appelons un point de terminaison Microsoft Graph protégé.
Dans ce tutoriel,
- Configurez une application démon pour utiliser ses détails d’inscription de l’application. Veillez à accorder à l’application l’autorisation User.Read.All sur l’API Microsoft Graph.
- Créez une application démon qui acquiert un jeton pour son propre compte et appelle une API web protégée.
Conditions préalables
- .NET. Dans ce tutoriel, nous utilisons .NET 9.0.
- Visual Studio Code ou un autre éditeur de code.
- Une inscription d’application dans votre locataire. Vérifiez que vous disposez des informations suivantes dans les détails d'enregistrement de votre application :
- L’ID d’application (client) de l’application web cliente que vous avez inscrite.
- L’ID d’annuaire (locataire) dans lequel vous avez inscrit votre application web.
- La valeur de clé secrète client pour l’application web que vous avez créée.
Créer une application démon .NET
Ouvrez votre terminal et accédez au dossier où vous voulez que votre projet soit actif.
Initialisez une application console .NET et accédez à son dossier racine.
dotnet new console -n DotnetDaemon cd DotnetDaemon
Installer des packages
Installer Microsoft.Identity.Web
et Microsoft.Identity.Web.DownstreamApi
packages :
dotnet add package Microsoft.Identity.Web
dotnet add package Microsoft.Identity.Web.DownstreamApi
Microsoft.Identity.Web
fournit la colle entre ASP.NET Core, l’intergiciel d’authentification et la bibliothèque d’authentification Microsoft (MSAL) pour .NET, ce qui vous permet d’ajouter plus facilement des fonctionnalités d’authentification et d’autorisation à votre application. Microsoft.Identity.Web.DownstreamApi
fournit une interface utilisée pour appeler une API en aval.
Créer un fichier appsettings.json et ajouter des configurations d'enregistrement
Créez un fichier appsettings.json dans le dossier racine de l’application.
Ajoutez les détails de l’inscription de l’application au fichier appsettings.json.
{ "AzureAd": { // "Authority": "", you can use this for customer tenants in place of Instance and TenantId values "Instance": "https://login.microsoftonline.com/", "TenantId": "Enter_the_Tenant_ID_Here", "ClientId": "Enter_the_Application_ID_Here", "ClientCredentials": [ { "SourceType": "ClientSecret", "ClientSecret": "Enter_the_Client_Secret_Here" } ] }, "DownstreamApi": { "BaseUrl": "https://graph.microsoft.com", "RelativePath": "/v1.0/users/", "RequestAppToken": true, "Scopes": [ "https://graph.microsoft.com/.default" ] } }
Remplacez les valeurs suivantes par les vôtres :
Valeur Descriptif Enter_the_Application_ID_Here L’ID d’application (client) de l’application démon cliente que vous avez enregistrée. Enter_the_Client_Secret_Here Valeur du secret d’application démon que vous avez créée. Enter_the_Tenant_ID_Here Identifiant de locataire du répertoire/tenant où l'application est enregistrée. Remarque
Pour les applications inscrites dans un locataire externe, vous pouvez utiliser l’autorité et supprimer l’instance et l’ID de locataire.
"Authority": "https://<Enter_the_Tenant_Subdomain_Here>.ciamlogin.com/"
. Où Enter_the_Tenant_Subdomain_Here est le sous-domaine du locataire.Ajoutez le fichier appsettings.json au fichier projet. Le fichier projet est un fichier .csproj dans votre projet. Cela est dû au fait que le fichier doit être copié dans le répertoire de sortie.
<ItemGroup> <None Update="appsettings.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup>
Acquérir un jeton d’accès
Ouvrez le fichier program.cs dans votre éditeur de code et supprimez son contenu.
Ajoutez vos packages au fichier.
using Microsoft.Extensions.DependencyInjection; using Microsoft.Identity.Abstractions; using Microsoft.Identity.Web;
Créez l’instance d’acquisition de jetons. Utilisez la
GetDefaultInstance
méthode de laTokenAcquirerFactory
classe deMicrosoft.Identity.Web
package pour générer l’instance d’acquisition de jetons. Par défaut, l’instance lit un fichier appsettings.json s’il existe dans le même dossier que l’application.GetDefaultInstance
nous permet également d’ajouter des services à la collection de services.Ajoutez cette ligne de code au fichier program.cs :
var tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();
Configurez les options de l'application pour qu'elles soient lues depuis la configuration et ajoutez le service
DownstreamApi
. LeDownstreamApi
service fournit une interface utilisée pour appeler une API en aval. Nous appelons ce service DownstreamAPI dans l’objet config. L’application démon lit les configurations de l’API en aval à partir de la section AvalApi de appsettings.json. Par défaut, vous obtenez un cache de jetons en mémoire.Ajoutez l’extrait de code suivant au fichier program.cs :
const string ServiceName = "DownstreamApi"; tokenAcquirerFactory.Services.AddDownstreamApi(ServiceName, tokenAcquirerFactory.Configuration.GetSection("DownstreamApi"));
L’API en aval que vous appelez est Microsoft Graph. Dans ce tutoriel, nous utilisons le
DownstreamApi
service. Vous pouvez également utiliser le Kit de développement logiciel (SDK) Microsoft Graph.Construisez l'acquéreur de jetons. Cela compose tous les services que vous ajoutez et retourne un fournisseur de services. Utilisez ce fournisseur de services pour accéder à la ressource d’API que vous ajoutez. Dans ce cas, vous n’ajoutez qu’une seule ressource d’API en tant que service en aval auquel vous souhaitez accéder.
Ajoutez l’extrait de code suivant au fichier program.cs :
var serviceProvider = tokenAcquirerFactory.Build();
Appeler l’API web
Ajoutez du code pour appeler votre API web protégée à l’aide de l’interface
IDownstreamApi
. Dans ce tutoriel, nous appelons un point de terminaison d’API Microsoft Graph.Ajoutez ce code au fichier program.cs :
try { IDownstreamApi downstreamApi = serviceProvider.GetRequiredService<IDownstreamApi>(); var response = await downstreamApi.GetForAppAsync<HttpResponseMessage>("DownstreamApi"); var content = await response.Content.ReadAsStringAsync(); var statusCode = response.StatusCode; Console.WriteLine($"Response status code: {statusCode}"); if (!content.Any()) { Console.WriteLine("There are no users to display."); return; } Console.WriteLine(content); } catch (Exception ex) { Console.WriteLine("We could not retrieve the user's list: " + $"{ex}"); }
Le code appelle le point de terminaison que vous avez défini dans le fichier appsettings.json . La
GetForAppAsync
méthode de l’interfaceIDownstreamApi
est utilisée pour appeler le point de terminaison. L’application effectue un appel en son propre nom. La méthode retourne unHttpResponseMessage
objet. La réponse est ensuite lue sous forme de chaîne et affichée dans la console.
Exécuter l’application démon client
Accédez au dossier racine de l’application démon et exécutez la commande suivante :
dotnet run
Si tout est correct, vous devriez voir le code d’état de la réponse : OK dans votre terminal. S’il existe des utilisateurs, les utilisateurs sont répertoriés dans le terminal, sinon vous voyez le message Il n’y a aucun utilisateur à afficher.
Si des erreurs se produisent, un message d’erreur s’affiche dans le terminal.
Résolution des problèmes
Si vous rencontrez des erreurs,
- Vérifiez les détails de l’inscription que vous avez ajoutés au fichier appsettings.json .
- Vérifiez que vous avez ajouté le fichier appsettings.json au fichier projet.
- Vérifiez que les autorisations de votre application sont correctement configurées.