Démarrage rapide : acquérir un jeton et appeler Microsoft Graph à partir d'une application de console Node.js
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
Inscrire et télécharger l’exemple d’application
Suivez les étapes ci-dessous pour commencer.
Étape 1 : Enregistrement de l’application
Conseil
Les étapes décrites dans cet article peuvent varier légèrement en fonction du portail de départ.
Pour inscrire votre application et ajouter manuellement les informations d’inscription de l’application à votre solution, procédez comme suit :
- Connectez-vous au centre d'administration Microsoft Entra au minimum en tant qu’Administrateur d'application.
- Accédez à Identité>Applications>Inscriptions d’applications.
- Sélectionnez Nouvelle inscription.
- Entrez un nom pour votre application (par exemple,
msal-node-cli
). Les utilisateurs de votre application peuvent voir ce nom, et vous pouvez le changer ultérieurement. - Sélectionnez Inscription.
- Sous Gérer, sélectionnez Certificats et secrets.
- Sous Secrets du client, sélectionnez Nouveau secret client, entrez un nom, puis sélectionnez Ajouter. Enregistrez la valeur secrète dans un emplacement sûr pour l’utiliser dans une étape ultérieure.
- Sous Gérer, sélectionnez Autorisations de l’API>Ajouter une autorisation. Sélectionnez Microsoft Graph.
- Sélectionnez Autorisations de l’application.
- Sous le nœud Utilisateur, sélectionnez User.Read.All, puis sélectionnez Ajouter des autorisations.
Étape 2 : Télécharger l’exemple de projet Node.js
Téléchargez l’exemple de code.
Étape 3 : Configurer l’exemple de projet Node.js
Extrayez le fichier zip dans un dossier local proche de la racine du disque, par exemple C:\Azure-Samples.
Éditez .env et remplacez les valeurs des champs
TENANT_ID
,CLIENT_ID
etCLIENT_SECRET
par l’extrait de code suivant :"TENANT_ID": "Enter_the_Tenant_Id_Here", "CLIENT_ID": "Enter_the_Application_Id_Here", "CLIENT_SECRET": "Enter_the_Client_Secret_Here"
Où :
Enter_the_Application_Id_Here
- est l’ID (de client) d’application de l’application que vous avez inscrite précédemment. Recherchez cet ID dans la Vue d’ensemble de l’inscription de l’application.Enter_the_Tenant_Id_Here
- remplacez cette valeur par l’ID de locataire ou le Nom du locataire (par exemple contoso.microsoft.com). Recherchez ces valeurs dans la Vue d’ensemble de l’inscription de l’application.Enter_the_Client_Secret_Here
- remplacez cette valeur par le secret client que vous avez créé précédemment. Pour générer une nouvelle clé, utilisez Certificats et secrets dans les paramètres de l’inscription de l’application.
L’utilisation d’un secret en texte clair dans le code source présente un risque de sécurité accru pour votre application. Bien que l’exemple de ce guide de démarrage rapide utilise une clé secrète client en texte clair, il ne s’agit que d’une simplicité. Nous vous recommandons d’utiliser des informations d’identification de certificat plutôt que des secrets client dans vos applications clientes confidentielles, en particulier dans celles que vous prévoyez de déployer en production.
Modifiez .env et remplacez les points de terminaison Microsoft Entra ID et Microsoft Graph par les valeurs suivantes :
- Pour le point de terminaison Microsoft Entra, remplacez
Enter_the_Cloud_Instance_Id_Here
parhttps://login.microsoftonline.com
. - Pour le point de terminaison Microsoft Graph, remplacez
Enter_the_Graph_Endpoint_Here
parhttps://graph.microsoft.com/
.
- Pour le point de terminaison Microsoft Entra, remplacez
Étape 4 : 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, car toute autorisation d’application uniquement nécessite le consentement de l’administrateur : une personne disposant au moins du rôle Administrateur d’application doit donner son consentement à votre application. Sélectionnez l’une des options ci-dessous en fonction de votre rôle :
Administrateurs
Si vous avez au moins le rôle Administrateur d’application, accédez à la page Autorisations de l’API dans Inscription d’applications sur le Portail Azure, puis sélectionnez Accorder le consentement de l’administrateur pour {nom du locataire} (où {nom du locataire} est le nom de votre annuaire).
Utilisateurs Standard
Si vous êtes utilisateur standard de votre locataire, vous devez demander à 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
Où :
Enter_the_Tenant_Id_Here
: remplacez cette valeur par l’ID du locataire ou le nom du locataire (par exemple, contoso.microsoft.com)Enter_the_Application_Id_Here
: est l’ID d’application (client) pour l’application que vous avez inscrite.
Étape 5 : 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 dont votre exemple d’application a besoin avant de l’exécuter pour la première 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 vers https://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 :