Démarrage rapide : acquérir un jeton et appeler l’API Microsoft Graph à partir d’une de l’identité de l’application d’une console
Bienvenue ! Ce n’est probablement pas la page que vous attendiez. Pendant que nous travaillons sur un correctif, ce lien devrait vous permettre d’accéder au bon article :
Démarrage rapide : Acquérir un jeton et appeler Microsoft Graph dans une application console .NET
Nous vous prions de nous excuser pour le désagrément et nous vous remercions de votre patience.
Ce guide de démarrage rapide utilise un exemple de code pour montrer comment une application console .NET peut obtenir un jeton d’accès pour appeler l’API Microsoft Graph et afficher une liste des utilisateurs dans le répertoire. Il montre également comment un travail ou un service Windows peut s’exécuter avec l’identité d’une application, au lieu de l’identité d’un utilisateur. L’exemple d’application de console dans ce guide de démarrage rapide est également une application démon. Il s’agit donc d’une application cliente confidentielle.
Prérequis
Configuration minimale requise : SDK .NET 6.0.
Télécharger et configurer votre application de démarrage rapide
Étape 1 : Configurer votre application dans le portail Azure
Pour que l’exemple de code de ce guide de démarrage rapide fonctionne, créez un secret client et ajoutez l’autorisation d’application User.Read.All de l’API Graph.
Votre application est configurée avec ces attributs.
Étape 2 : Télécharger votre projet Visual Studio
Exécutez le projet avec Visual Studio 2022.
Conseil
Pour éviter les erreurs dues à des limitations de longueur de chemin dans Windows, nous vous recommandons d’extraire l’archive ou de cloner le référentiel dans un répertoire près de la racine de votre lecteur.
Notes
Enter_the_Supported_Account_Info_Here
Étape 3 : Consentement de l’administrateur
L’exécution de l’application entraîne maintenant la sortie HTTP 403 - Forbidden* error: "Insufficient privileges to complete the operation
. Cette erreur se produit parce qu’une autorisation d’application uniquement nécessite qu’un administrateur général de l’annuaire accorde son consentement à l’application. Sélectionnez l’une des options suivantes en fonction du rôle.
Administrateur de locataires général
Pour un administrateur de client général, accédez à la page Autorisations de l’API et sélectionnez Accorder le consentement administrateur pour Entrer_le_nom_du_locataire_ici.
Utilisateur standard
Pour un utilisateur standard de votre locataire, demandez à un administrateur général de vous accorder le consentement administrateur pour l’application. Pour ce faire, fournissez l’URL suivante à l’administrateur :
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
L’erreur AADSTS50011: No reply address is registered for the application
peut s’afficher après avoir octroyé le consentement à l’application à l’aide de l’URL précédente. Cette erreur se produit parce que l’application et l’URL n’ont pas d’URI de redirection. Vous pouvez ignorer ce message.
Étape 4 : Exécuter l’application
Dans Visual Studio, appuyez sur F5 pour exécuter l’application. Dans le cas contraire, exécutez l’application via l’invite de commandes, la console ou le terminal :
cd {ProjectFolder}\1-Call-MSGraph\daemon-console
dotnet run
Dans ce code :
{ProjectFolder}
est le dossier où vous avez extrait le fichier zip. par exempleC:\Azure-Samples\active-directory-dotnetcore-daemon-v2
.
En conséquence, une liste d’utilisateurs dans Microsoft Entra ID devrait s’afficher.
Cette application de démarrage rapide utilise un secret client pour s’identifier en tant que client confidentiel. Le secret client est ajouté sous la forme d’un fichier de texte simple aux fichiers du projet. Pour des raisons de sécurité, il est recommandé d’utiliser un certificat plutôt qu’un secret client avant de considérer l’application comme une application de production. Pour savoir plus en détails comment utiliser un certificat, voir ces instructions.
Informations complémentaires
Cette section offre une vue d’ensemble du code requis pour connecter les utilisateurs. Cette vue d'ensemble peut être utile pour comprendre comment le code > fonctionne, quels sont les principaux arguments et comment ajouter une connexion à une application console .NET existante.
Fonctionnement de l’exemple
Microsoft.Identity.Web.GraphServiceClient
Microsoft Identity Web (dans le package Microsoft.Identity.Web.TokenAcquisition) est la bibliothèque utilisée pour demander des jetons afin d’accéder à une API protégée par la plateforme d’identité Microsoft. Ce guide de démarrage rapide demande des jetons à l’aide de l’identité de l’application au lieu d’autorisations déléguées. Le flux d’authentification utilisé dans ce cas est désigné sous le terme de flux d’informations d’identification du client OAuth. Pour plus d’informations sur l’utilisation de MSAL.NET avec un flux d’informations d’identification du client, consultez cet article. Étant donné que l’application daemon de ce démarrage rapide appelle Microsoft Graph, vous installez le package Microsoft.Identity.Web.GraphServiceClient qui gère automatiquement les demandes authentifiées à Microsoft Graph (et se référence lui-même Microsoft.Identity.Web.TokenAcquisition)
Vous pouvez installer Microsoft.Identity.Web.GraphServiceClient en exécutant la commande suivante dans la console du gestionnaire de package de Visual Studio :
dotnet add package Microsoft.Identity.Web.GraphServiceClient
Initialisation d’applications
Ajoutez la référence pour Microsoft.Identity.Web en ajoutant le code suivant :
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Graph;
using Microsoft.Identity.Abstractions;
using Microsoft.Identity.Web;
Ensuite, initialisez l’application avec les éléments suivants :
// Get the Token acquirer factory instance. By default it reads an appsettings.json
// file if it exists in the same folder as the app (make sure that the
// "Copy to Output Directory" property of the appsettings.json file is "Copy if newer").
TokenAcquirerFactory tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();
// Configure the application options to be read from the configuration
// and add the services you need (Graph, token cache)
IServiceCollection services = tokenAcquirerFactory.Services;
services.AddMicrosoftGraph();
// By default, you get an in-memory token cache.
// For more token cache serialization options, see https://aka.ms/msal-net-token-cache-serialization
// Resolve the dependency injection.
var serviceProvider = tokenAcquirerFactory.Build();
Ce code utilise la configuration définie dans le fichier appsettings.json :
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "[Enter here the tenantID or domain name for your Azure AD tenant]",
"ClientId": "[Enter here the ClientId for your application]",
"ClientCredentials": [
{
"SourceType": "ClientSecret",
"ClientSecret": "[Enter here a client secret for your application]"
}
]
}
}
Élément | Description |
---|---|
ClientSecret |
La clé secrète client créée pour l’application dans le portail Azure. |
ClientId |
L’ID d’application (client) de l’application inscrite dans le portail Azure. Cette valeur se trouve dans la page Vue d’ensemble de l’application dans le Portail Azure. |
Instance |
(Facultatif) Le service d’émission de jeton de sécurité (STS) peut citer le point de terminaison de l’instance pour l’application à authentifier. Il s’agit généralement de https://login.microsoftonline.com/ pour le cloud public. |
TenantId |
Nom du tenant ou de l’ID de tenant. |
Pour plus d’informations, consultez la documentation de référence pour ConfidentialClientApplication
.
Appel de Microsoft Graph
Pour demander un jeton à l’aide de l’identité d’application, utilisez la méthode AcquireTokenForClient
:
GraphServiceClient graphServiceClient = serviceProvider.GetRequiredService<GraphServiceClient>();
var users = await graphServiceClient.Users
.GetAsync(r => r.Options.WithAppOnly());
Aide et support
Si vous avez besoin d’aide, si vous souhaitez signaler un problème ou si vous voulez en savoir plus sur vos options de support, consultez Aide et support pour les développeurs.
Étapes suivantes
Pour en savoir plus sur les applications démon, consultez la vue d’ensemble du scénario :