Краткое руководство. Получение маркера и вызов Microsoft Graph из приложения управляющей программы Python

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

Diagram showing how the sample app generated by this quickstart works.

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

Для запуска этого примера вам потребуются следующие компоненты:

Регистрация и скачивание приложения, используемого в этом кратком руководстве

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

Совет

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

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

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

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

Скачивание проекта управляющей программы Python

Шаг 3. Настройка проекта Python

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

  2. Перейдите к вложенной папке 1-Call-MsGraph-WithSecret.

  3. Измените файл parameters.json, заменив значения полей authority, client_id и secret следующим фрагментом кода:

    "authority": "https://login.microsoftonline.com/Enter_the_Tenant_Id_Here",
    "client_id": "Enter_the_Application_Id_Here",
    "secret": "Enter_the_Client_Secret_Here"
    

    Где:

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

Совет

Чтобы найти значения идентификатора приложения (клиента), идентификатор каталога (клиента), перейдите на страницу обзора приложения в Центре администрирования Microsoft Entra. Чтобы создать ключ, перейдите на страницу Сертификаты и секреты.

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

Глобальный администратор клиента

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

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

Если вы являетесь обычным пользователем арендатора, попросите глобального администратора предоставить согласие администратора для вашего приложения. Чтобы сделать это, предоставьте следующий 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. Запуск приложения

Зависимости этого образца необходимо установить один раз.

pip install -r requirements.txt

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

python confidential_client_secret_sample.py parameters.json

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

Важно!

В этом кратком руководстве приложение использует секрет клиента для собственной идентификации в качестве конфиденциального клиента. Так как секрет клиента добавляется в качестве обычного текста в файлы проекта, из соображениям безопасности рекомендуется использовать сертификат вместо секрета клиента, прежде чем использовать приложение в качестве рабочего. Дополнительные сведения об использовании сертификата см. в этих инструкциях в том же репозитории GitHub для этого примера, но во второй папке 2-Call-MsGraph-WithCertificate.

Дополнительные сведения

MSAL Python

MSAL Python — это библиотека, используемая для выполнения входа пользователей и запросов маркеров, которые нужны для доступа к API, защищенному платформой удостоверений Майкрософт. Как описано выше, в этом кратком руководстве маркеры запрашиваются с использованием собственного удостоверения приложения вместо делегированных разрешений. Поток проверки подлинности, используемый в данном случае, называется потоком учетных данных клиента OAuth. Дополнительные сведения об использовании MSAL Python с приложениями управляющей программы см. в этой статье.

Установите MSAL Python, выполнив следующую команду pip.

pip install msal

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

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

import msal

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

app = msal.ConfidentialClientApplication(
    config["client_id"], authority=config["authority"],
    client_credential=config["secret"])
Где: Description
config["secret"] Секрет клиента, созданный для приложения в Центре администрирования Microsoft Entra.
config["client_id"] Идентификатор приложения (клиента) для приложения, зарегистрированного в Центре администрирования Microsoft Entra. Это значение можно найти на странице обзора приложения в Центре администрирования Microsoft Entra.
config["authority"] Конечная точка STS для проверки подлинности пользователей. Обычно https://login.microsoftonline.com/{tenant} для общедоступного облака, где {tenant} — имя или идентификатор вашего арендатора.

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

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

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

result = None
result = app.acquire_token_silent(config["scope"], account=None)

if not result:
    logging.info("No suitable token exists in cache. Let's get a new one from AAD.")
    result = app.acquire_token_for_client(scopes=config["scope"])
Где: Description
config["scope"] Содержит запрошенные области. Для конфиденциальных клиентов это должно использовать формат, аналогичный {Application ID URI}/.default тому, чтобы указать, что запрашиваемые область являются статически определенными в объекте приложения, заданном в Центре администрирования Microsoft Entra (для Microsoft Graph {Application ID URI} указывает на https://graph.microsoft.com). Для пользовательских веб-API {Application ID URI} определяется в разделе "Предоставление API" в Регистрация приложений в Центре администрирования Microsoft Entra.

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

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

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

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

Дополнительные сведения об управляющих программах см. на главной странице сценария.