Краткое руководство. Получение маркера и вызов API Microsoft Graph из консольного приложения Python с помощью удостоверения приложения
Добро пожаловать! Возможно, это не та страница, которую вы ожидали. Пока мы работаем над исправлением, воспользуйтесь этой ссылкой, чтобы перейти к нужной статье:
Приносим извинения за неудобства и благодарим за терпение! Мы работаем над устранением этой проблемы.
При работе с этим кратким руководством вы скачаете и выполните пример кода. Такой пример кода демонстрирует, как приложение Python может получить маркер доступа с помощью удостоверения приложения для вызова API Microsoft Graph и отобразить список пользователей в каталоге, а также как автоматическое задание или служба Windows могут выполняться с удостоверением приложения, а не пользователя.
Необходимые компоненты
Для запуска этого примера вам потребуются следующие компоненты:
Скачивание и настройка приложения, используемого в этом кратком руководстве
Шаг 1. Настройка приложения на портале Azure
Для работы примера кода, приведенного в этом кратком руководстве, необходимо создать секрет клиента и добавить разрешение приложения API Graph User.Read.All.
Приложение настроено с помощью этих атрибутов.
Шаг 2. Скачивание проекта Python
Примечание.
Enter_the_Supported_Account_Info_Here
Обычный пользователь
Если вы являетесь стандартным пользователем вашего клиента, попросите глобального администратора предоставить согласие администратора для вашего приложения. Чтобы сделать это, предоставьте следующий 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
.
Справка и поддержка
Если вам нужна помощь, если вы хотите сообщить о проблеме или узнать о доступных вариантах поддержки, воспользуйтесь статьей Возможности получения поддержки и справки для разработчиков.
Следующие шаги
Дополнительные сведения об управляющих программах см. на главной странице сценария.