Démarrage rapide : Acquérir un jeton et appeler l’API Microsoft Graph à partir d’une application console Node.js en utilisant l’identité de l’application
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 :
Nous vous prions de nous excuser pour le désagrément et nous vous remercions de votre patience.
Dans ce guide de démarrage rapide, vous téléchargez et vous exécutez un exemple de code qui montre comment une application Node.js peut obtenir un jeton d’accès en utilisant l’identité de l’application pour appeler l’API Microsoft Graph et afficher une liste d’utilisateurs dans l’annuaire. L’exemple de code montre comment un travail sans assistance ou un service Windows peut s’exécuter avec l’identité d’une application, au lieu de l’identité d’un utilisateur.
Ce guide de démarrage rapide utilise la bibliothèque d’authentification Microsoft pour Node.js (MSAL Node) avec l’octroi des informations d’identification du client.
Prérequis
- Node.JS
- Visual Studio Code ou un autre éditeur de code
Télécharger et configurer l’exemple d’application
Étape 1 : Configurer l’application dans le portail Azure
Pour que l’exemple de code fonctionne dans ce guide de démarrage rapide, vous devez créer un secret client et ajouter l’autorisation d’application User.Read.All de l’API Graph.
Votre application est configurée avec ces attributs.
Étape 2 : Télécharger l’exemple de projet Node.js
Notes
Enter_the_Supported_Account_Info_Here
Étape 3 : Consentement de l’administrateur
Si vous essayez d’exécuter l’application à ce stade, vous recevez l’erreur HTTP 403 - Interdit : Insufficient privileges to complete the operation
. Cette erreur se produit parce que les autorisations d’application uniquement nécessitent le consentement administrateur : un administrateur de votre annuaire doit donner son consentement à votre application. Sélectionnez l’une des options ci-dessous en fonction de votre rôle :
Administrateur client
Si vous êtes administrateur, accédez à la page Autorisations de l’API et sélectionnez Accorder le consentement administrateur pour >Entrer_le_nom_du_locataire_ici
Utilisateur standard
Si vous êtes utilisateur standard de votre locataire, vous devez demander au moins à un administrateur d’application cloud de vous accorder son consentement administrateur pour votre application. Pour ce faire, donnez l’URL suivante à votre administrateur :
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
Étape 4 : Exécution de l'application
Localisez le dossier racine de l’exemple (c’est là où se trouve package.json
) dans une invite de commandes ou une console. Vous devez installer les dépendances de cet exemple une seule fois :
npm install
Ensuite, exécutez l’application via l’invite de commandes ou la console :
node . --op getUsers
Vous voyez, sur la sortie de la console, un fragment JSON représentant une liste d’utilisateurs dans votre répertoire Microsoft Entra.
À propos du code
Voici quelques-uns des aspects importants de l’exemple d’application.
MSAL Node
MSAL Node est la bibliothèque utilisée pour connecter les utilisateurs et demander des jetons permettant d’accéder à une API protégée par la plateforme d’identités Microsoft. Comme vous l’avez vu, ce guide de démarrage rapide demande des jetons par des autorisations d’application (en utilisant l’identité propre de l’application) au lieu d’autorisations déléguées. Le flux d’authentification utilisé dans ce cas est désigné sous le nom de flux d’informations d’identification de client OAuth 2.0. Pour plus d’informations sur l’utilisation de MSAL Node avec des applications démon, consultez Scénario : Application démon.
Vous pouvez installer MSAL Node en exécutant la commande npm suivante.
npm install @azure/msal-node --save
Initialisation MSAL
Vous pouvez ajouter la référence de MSAL en ajoutant le code suivant :
const msal = require('@azure/msal-node');
Ensuite, initialisez MSAL à l’aide du code suivant :
const msalConfig = {
auth: {
clientId: "Enter_the_Application_Id_Here",
authority: "https://login.microsoftonline.com/Enter_the_Tenant_Id_Here",
clientSecret: "Enter_the_Client_Secret_Here",
}
};
const cca = new msal.ConfidentialClientApplication(msalConfig);
Où : Description clientId
Est l’ID d’application (client) de l’application inscrite dans le portail Azure. Vous pouvez retrouver cette valeur dans la page Vue d’ensemble de l’application dans le portail Azure. authority
Point de terminaison STS pour l’utilisateur à authentifier. Généralement https://login.microsoftonline.com/{tenant}
pour un cloud public, où {tenant} est le nom ou l’ID de votre locataire.clientSecret
Est le secret client créé pour l’application dans le portail Azure.
Pour plus d’informations, consultez la documentation de référence sur ConfidentialClientApplication
Demande de jetons
Pour demander un jeton à l’aide de l’identité d’application, utilisez la méthode acquireTokenByClientCredential
:
const tokenRequest = {
scopes: [ 'https://graph.microsoft.com/.default' ],
};
const tokenResponse = await cca.acquireTokenByClientCredential(tokenRequest);
Où : Description tokenRequest
Contient les étendues demandées. Pour les clients confidentiels, utilisez un format similaire à {Application ID URI}/.default
. Ce format indique que les étendues demandées sont celles qui sont définies de manière statique dans l’objet application défini dans le portail Azure (pour Microsoft Graph,{Application ID URI}
pointe vershttps://graph.microsoft.com
). Pour les API web personnalisées,{Application ID URI}
est défini sous la section Exposer une API dans Inscription d’application sur le portail Azure.tokenResponse
La réponse contient un jeton d’accès pour les étendues demandées.
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 plus d’informations sur le développement d’applications démon/console avec MSAL Node, consultez le tutoriel :