Краткое руководство. Получение маркера и вызов Microsoft Graph из консольного приложения Node.js
При работе с этим кратким руководством вы скачаете и выполните пример кода, который демонстрирует получение маркера доступа с помощью удостоверения приложения из консольного приложения Node.js для вызова API Microsoft Graph и отображения списка пользователей в каталоге. а также как автоматическое задание или служба Windows могут выполняться с удостоверением приложения, а не пользователя.
В рамках этого краткого руководства используется библиотека проверки подлинности Майкрософт для Node.js (MSAL Node) с предоставлением учетных данных клиента.
Необходимые компоненты
- Node.js
- Visual Studio Code или любой другой редактор кода.
Регистрация и скачивание примера приложения
Выполните шаги ниже, чтобы начать.
Шаг 1. Регистрация приложения
Совет
Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.
Чтобы зарегистрировать приложение и добавить сведения о его регистрации в решение вручную, сделайте следующее:
- Войдите в Центр администрирования Microsoft Entra как минимум администратор приложений.
- Перейдите к приложениям> удостоверений>Регистрация приложений.
- Выберите Создать регистрацию.
- Введите имя приложения, например
msal-node-cli
. Пользователи приложения могут видеть это имя. Вы можете изменить его позже. - Выберите Зарегистрировать.
- В разделе Управление выберите Сертификаты и секреты.
- В разделе Секреты клиента выберите Новый секрет клиента, введите имя, а затем нажмите кнопку Добавить. Сохраните значение секрета в надежном месте, так как это значение потребуется вам в дальнейшем.
- В разделе Управление выберите Разрешения API>Добавить разрешение. Выберите Microsoft Graph.
- Выберите Разрешения приложения.
- В узле Пользователь выберите User.Read.All, а затем щелкните Добавить разрешения.
Шаг 2. Скачивание примера проекта Node.js
Шаг 3. Настройка примера проекта Node.js
Распакуйте ZIP-файл в локальную папку, расположенную как можно ближе к корню диска (например, C:\Azure-Samples).
Измените файл .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
— замените это значение созданным ранее секретом клиента. Чтобы создать новый ключ, используйте сертификаты и секреты в параметрах регистрации приложения.
Использование секрета в формате открытого текста в исходном коде повышает риски безопасности для приложения. В этом кратком руководстве используется секрет клиента с открытым текстом, но это сделано только для упрощения примера. Мы рекомендуем использовать учетные данные сертификата, а не секреты клиента, в конфиденциальных клиентских приложениях, особенно если вы планируете развертывать такие приложения в рабочей среде.
Измените 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/
.
- Для конечной точки Microsoft Entra замените
Шаг 4. Согласие администратора
Если попытаться запустить приложение на этом этапе, вы получите ошибку 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 см. в учебнике: