Поделиться через


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

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

Схема, показывающая, как работает пример приложения, созданного этим кратким руководством.

Необходимые условия

Чтобы запустить этот пример, вам потребуется:

Регистрация и скачивание приложения быстрого запуска

Шаг 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 и замените значения полей authorityclient_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. Чтобы создать новый ключ, перейдите на страницу "Сертификаты и секреты ".

Стандартный пользователь

Если вы являетесь стандартным пользователем вашего клиента, попросите глобального администратора предоставить согласие администратора для вашего приложения. Для этого предоставьте администратору следующий 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"])
Где: Описание
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"])
Где: Описание
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

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

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

Дальнейшие действия

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