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

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 :

  1. Connectez-vous au centre d’administration Microsoft Entra en tant qu’administrateur d’applications au moins.
  2. Accédez à Identité>Applications>Inscriptions d’applications.
  3. Sélectionnez Nouvelle inscription.
  4. 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.
  5. Sélectionnez Inscription.
  6. Sous Gérer, sélectionnez Certificats et secrets.
  7. 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.
  8. Sous Gérer, sélectionnez Autorisations de l’API>Ajouter une autorisation. Sélectionnez Microsoft Graph.
  9. Sélectionnez Autorisations de l’application.
  10. 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

  1. Extrayez le fichier zip dans un dossier local proche de la racine du disque, par exemple C:\Azure-Samples.

  2. Éditez .env et remplacez les valeurs des champs TENANT_ID, CLIENT_ID et CLIENT_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.

  3. 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 par https://login.microsoftonline.com.
    • Pour le point de terminaison Microsoft Graph, remplacez Enter_the_Graph_Endpoint_Here par https://graph.microsoft.com/.

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 toute autorisation d’application uniquement nécessite un consentement administrateur : un administrateur d’application ou un administrateur général doit donner son consentement à votre application. Sélectionnez l’une des options ci-dessous en fonction de votre rôle :

Administrateurs

Si vous avez le rôle d’administrateur d’application ou d’administrateur général, 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 général d’accorder son consentement administrateur à 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 :