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

Добро пожаловать! Возможно, это не та страница, которую вы ожидали. Пока мы работаем над исправлением, воспользуйтесь этой ссылкой, чтобы перейти к нужной статье:

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

Приносим извинения за неудобства и благодарим за терпение! Мы работаем над устранением этой проблемы.

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

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

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

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

Шаг 1. Настройка приложения на портале Azure

Для работы примера кода, приведенного в этом кратком руководстве, необходимо создать секрет клиента и добавить разрешение приложения API Graph User.Read.All.

Already configured Приложение настроено с помощью этих атрибутов.

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

Примечание.

Enter_the_Supported_Account_Info_Here

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

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

Если вы являетесь глобальным Администратор istrator, перейдите на страницу "Разрешения API" выберите "Предоставить согласие администратора для Enter_the_Tenant_Name_Here".

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

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

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

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

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

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"] Секрет клиента, созданный для приложения на портале Azure.
config["client_id"] Идентификатор приложения (клиента), зарегистрированного на портале Azure. Это значение можно найти на странице приложения Обзор на портале Azure.
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 Azure AD.")
    result = app.acquire_token_for_client(scopes=config["scope"])
Где: Description
config["scope"] Содержит запрошенные области. Для конфиденциальных клиентов следует использовать формат, аналогичный {Application ID URI}/.default, который указывает, что запрашиваемые области — это те, которые статически определены в объекте приложения, заданном на портале Azure (для Microsoft Graph {Application ID URI} указывает на https://graph.microsoft.com). Для пользовательских веб-API {Application ID URI} определяется в разделе Предоставление API в разделе Регистрация приложений на портале Azure.

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

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

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

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

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