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