Краткое руководство. Получение маркера и вызов Microsoft Graph из приложения управляющей программы Python
При работе с этим кратким руководством вы скачаете и выполните пример кода. Такой пример кода демонстрирует, как приложение Python может получить маркер доступа с помощью удостоверения приложения для вызова API Microsoft Graph и отобразить список пользователей в каталоге, а также как автоматическое задание или служба Windows могут выполняться с удостоверением приложения, а не пользователя.
Необходимые компоненты
Для запуска этого примера вам потребуются следующие компоненты:
Регистрация и скачивание приложения, используемого в этом кратком руководстве
Шаг 1. Регистрация приложения
Совет
Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.
Чтобы зарегистрировать приложение и добавить сведения о его регистрации в решение вручную, сделайте следующее:
- Войдите в центр администрирования Microsoft Entra.
- Если у вас есть доступ к нескольким клиентам, используйте значок "Параметры" в верхнем меню, чтобы переключиться на клиент, в котором вы хотите зарегистрировать приложение из меню каталогов и подписок.
- Перейдите к приложениям> удостоверений>Регистрация приложений выберите "Создать регистрацию".
- Введите имя приложения, например
Daemon-console
. Пользователи приложения могут видеть это имя. Вы можете изменить его позже. - Выберите Зарегистрировать.
- В разделе Управление выберите Сертификаты и секреты.
- В разделе Секреты клиента выберите Новый секрет клиента, введите имя, а затем нажмите кнопку Добавить. Сохраните значение секрета в надежном месте, так как это значение потребуется вам в дальнейшем.
- В разделе Управление выберите Разрешения API>Добавить разрешение. Выберите Microsoft Graph.
- Выберите Разрешения приложения.
- В узле Пользователь выберите User.Read.All, а затем щелкните Добавить разрешения.
Шаг 2. Скачивание проекта Python
Скачивание проекта управляющей программы Python
Шаг 3. Настройка проекта Python
Извлеките ZIP-файл в локальную папку, расположенную как можно ближе к корню диска (например, C:\Azure-Samples).
Перейдите к вложенной папке 1-Call-MsGraph-WithSecret.
Измените файл 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. Чтобы создать ключ, перейдите на страницу Сертификаты и секреты.
Обычный пользователь
Если вы являетесь стандартным пользователем вашего клиента, попросите глобального администратора предоставить согласие администратора для вашего приложения. Чтобы сделать это, предоставьте следующий 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
.
Справка и поддержка
Если вам нужна помощь, если вы хотите сообщить о проблеме или узнать о доступных вариантах поддержки, воспользуйтесь статьей Возможности получения поддержки и справки для разработчиков.
Следующие шаги
Дополнительные сведения об управляющих программах см. на главной странице сценария.