Бөлісу құралы:


Краткое руководство. Получение маркера и вызов Microsoft Graph из консольного приложения Node.js

При работе с этим кратким руководством вы скачаете и выполните пример кода, который демонстрирует получение маркера доступа с помощью удостоверения приложения из консольного приложения Node.js для вызова API Microsoft Graph и отображения списка пользователей в каталоге. а также как автоматическое задание или служба Windows могут выполняться с удостоверением приложения, а не пользователя.

В рамках этого краткого руководства используется библиотека проверки подлинности Майкрософт для Node.js (MSAL Node) с предоставлением учетных данных клиента.

Необходимые компоненты

Регистрация и скачивание примера приложения

Выполните шаги ниже, чтобы начать.

Шаг 1. Регистрация приложения

Совет

Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.

Чтобы зарегистрировать приложение и добавить сведения о его регистрации в решение вручную, сделайте следующее:

  1. Войдите в Центр администрирования Microsoft Entra как минимум администратор приложений.
  2. Перейдите к приложениям> удостоверений>Регистрация приложений.
  3. Выберите Создать регистрацию.
  4. Введите имя приложения, например msal-node-cli. Пользователи приложения могут видеть это имя. Вы можете изменить его позже.
  5. Выберите Зарегистрировать.
  6. В разделе Управление выберите Сертификаты и секреты.
  7. В разделе Секреты клиента выберите Новый секрет клиента, введите имя, а затем нажмите кнопку Добавить. Сохраните значение секрета в надежном месте, так как это значение потребуется вам в дальнейшем.
  8. В разделе Управление выберите Разрешения API>Добавить разрешение. Выберите Microsoft Graph.
  9. Выберите Разрешения приложения.
  10. В узле Пользователь выберите User.Read.All, а затем щелкните Добавить разрешения.

Шаг 2. Скачивание примера проекта Node.js

Скачивание примера кода

Шаг 3. Настройка примера проекта Node.js

  1. Распакуйте ZIP-файл в локальную папку, расположенную как можно ближе к корню диска (например, C:\Azure-Samples).

  2. Измените файл .env, заменив значения полей TENANT_ID, CLIENT_ID и CLIENT_SECRET следующим фрагментом кода:

    "TENANT_ID": "Enter_the_Tenant_Id_Here",
    "CLIENT_ID": "Enter_the_Application_Id_Here",
    "CLIENT_SECRET": "Enter_the_Client_Secret_Here"
    

    Где:

    • Enter_the_Application_Id_Here — это идентификатор зарегистрированного вами ранее приложения (клиента). Найдите этот идентификатор в обзоре регистрации приложения.
    • Enter_the_Tenant_Id_Here — замените это значение идентификатором арендатора или именем арендатора (например, contoso.microsoft.com). Найдите эти значения в обзоре регистрации приложения.
    • Enter_the_Client_Secret_Here — замените это значение созданным ранее секретом клиента. Чтобы создать новый ключ, используйте сертификаты и секреты в параметрах регистрации приложения.

    Использование секрета в формате открытого текста в исходном коде повышает риски безопасности для приложения. В этом кратком руководстве используется секрет клиента с открытым текстом, но это сделано только для упрощения примера. Мы рекомендуем использовать учетные данные сертификата, а не секреты клиента, в конфиденциальных клиентских приложениях, особенно если вы планируете развертывать такие приложения в рабочей среде.

  3. Измените env и замените идентификатор Microsoft Entra и конечные точки Microsoft Graph следующими значениями:

    • Для конечной точки Microsoft Entra замените Enter_the_Cloud_Instance_Id_Here https://login.microsoftonline.comна .
    • Для конечной точки Microsoft Graph замените Enter_the_Graph_Endpoint_Here на https://graph.microsoft.com/.

Если попытаться запустить приложение на этом этапе, вы получите ошибку HTTP 403 — Forbidden (запрещено): Insufficient privileges to complete the operation. Эта ошибка возникает, так как для любого разрешения только для приложений требуется согласие администратора: кто-то, которому назначена по крайней мере роль администратора приложений, должна дать согласие вашему приложению. Выберите один из следующих вариантов с учетом своей роли:

Администраторы

Если вы назначены по крайней мере роль администратора приложений, перейдите на страницу "Разрешения API" в регистрации приложений портал Azure и выберите "Предоставить согласие администратора" для {Имя клиента} (где {Имя клиента} — имя вашего каталога).

Обычные пользователи

Если вы являетесь стандартным пользователем вашего клиента, вам необходимо попросить администратора облачных приложений предоставить согласие администратора для вашего приложения. Чтобы сделать это, предоставьте следующий URL-адрес администратору:

https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here

Где:

  • Enter_the_Tenant_Id_Here — замените это значение на идентификатор клиента или имя клиента (например, contoso.microsoft.com).
  • Enter_the_Application_Id_Here — это идентификатор приложения (клиента), которое вы зарегистрировали.

Шаг 5. Запуск приложения

Найдите корневую папку примера (где располагается файл package.json) в командной строке или консоли. Перед первым запуском приложения необходимо установить зависимости, необходимые для примера приложения:

npm install

Затем запустите приложение с помощью командной строки или консоли:

node . --op getUsers

На консоли вы увидите фрагмент JSON, представляющий список пользователей в каталоге Microsoft Entra.

Примечания о коде

Ниже рассмотрены некоторые важные аспекты примера приложения.

MSAL Node

Библиотека MSAL Node нужна для обработки входа пользователей и запросов маркеров, которые используются для доступа к API, защищенному платформой удостоверений Майкрософт. Как описано выше, в рамках этого краткого руководства маркеры запрашиваются по разрешениям приложения (с использованием собственного удостоверения приложения), а не по делегированным разрешениям. Поток аутентификации, используемый в данном случае, называется потоком учетных данных клиента OAuth 2.0. Дополнительные сведения об использовании MSAL Node с приложениями управляющей программы см. в статье "Сценарий: приложение управляющей программы".

Вы можете установить MSAL Node, выполнив следующую команду npm.

npm install @azure/msal-node --save

Инициализация MSAL

Добавив следующий код, вы можете добавить ссылку на MSAL.

const msal = require('@azure/msal-node');

Затем выполните инициализацию MSAL с помощью следующего кода.

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);
Где: Description
clientId Идентификатор приложения (клиента), зарегистрированного на портале Azure. Это значение можно найти на странице приложения Обзор на портале Azure.
authority Конечная точка STS для проверки подлинности пользователей. Обычно https://login.microsoftonline.com/{tenant} для общедоступного облака, где {tenant} — имя или идентификатор вашего арендатора.
clientSecret Секрет клиента, созданный для приложения на портале Azure.

Дополнительные сведения см. в справочной документации по ConfidentialClientApplication.

Запрос маркеров

Чтобы запросить маркер с помощью удостоверение приложения, используйте метод acquireTokenByClientCredential.

const tokenRequest = {
    scopes: [ 'https://graph.microsoft.com/.default' ],
};

const tokenResponse = await cca.acquireTokenByClientCredential(tokenRequest);
Где: Description
tokenRequest Содержит запрошенные области. Для конфиденциальных клиентов следует использовать формат, аналогичный {Application ID URI}/.default, который указывает, что запрашиваемые области — это те, которые статически определены в объекте приложения, заданном на портале Azure (для Microsoft Graph {Application ID URI} указывает на https://graph.microsoft.com). Для пользовательских веб-API {Application ID URI} определяется в разделе Предоставление API в разделе регистрации приложения на портале Azure.
tokenResponse Ответ содержит маркер доступа для запрошенных областей.

Справка и поддержка

Если вам нужна помощь, если вы хотите сообщить о проблеме или узнать о доступных вариантах поддержки, воспользуйтесь статьей Возможности получения поддержки и справки для разработчиков.

Следующие шаги

Дополнительные сведения о разработке приложений управляющих и консольных программ с помощью MSAL Node см. в учебнике: