Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если вы создаете приложение Windows, вы можете упростить проверку подлинности пользователей с помощью брокера проверки подлинности. Диспетчер веб-учетных записей (WAM) — это брокер проверки подлинности, который работает с MSAL Python. WAM доступен только в Windows 10 и более поздних версиях, а также Windows Server 2019 и более поздних версиях.
Дополнительные сведения о преимуществах использования брокера аутентификации см. в разделе Что такое брокер документации MSAL.NET.
Usage
Чтобы использовать брокер, вам потребуется установить связанные с брокером пакеты в дополнение к базовому пакету MSAL из PyPI:
pip install msal[broker]>=1.20,<2
Если пакеты, связанные с брокером, не установлены и вы пытаетесь использовать брокер проверки подлинности, вы получите ошибку ImportError: необходимо установить зависимость по: pip install "msal[broker]>=1.20,2<".
Затем создайте новый экземпляр PublicClientApplication и задайте для enable_broker_on_windows значение True. Это гарантирует, что MSAL попытается взаимодействовать с WAM вместо открытия нового окна браузера. Если вы пишете кроссплатформенное приложение, вам также потребуется использовать enable_broker_on_mac, как описано в статье "Использование MSAL Python с брокером проверки подлинности в macOS".
from msal import PublicClientApplication
app = PublicClientApplication(
"CLIENT_ID",
authority="https://login.microsoftonline.com/common",
enable_broker_on_windows=True)
Теперь можно получить маркер, вызвав acquire_token_interactive и указав дескриптор родительского окна с помощью parent_window_handle:
result = app.acquire_token_interactive(["User.ReadBasic.All"],
parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
Маркер родительского окна необходим WAM, чтобы убедиться, что диалоговое окно отображается правильно в верхней части окна запроса. MSAL не делает этого вывода напрямую, поскольку на то, к какому окну должен быть привязан WAM, может влиять множество факторов, и именно разработчики приложений лучше всего могут решить, каким должно быть это окно.
Для консольных приложений MSAL упрощает задачу, предлагая готовое решение для получения дескриптора окна терминала — CONSOLE_WINDOW_HANDLE. Для настольных приложений может потребоваться дополнительная работа с API Windows, чтобы получить дескриптор окна. Вспомогательные пакеты, такие как pywin32 , могут помочь с вызовами API.
Перед запуском приложения убедитесь, что настроили URL-адрес перенаправления для настольного приложения:
Чтобы использовать брокер Windows, приложение должно иметь правильный URL-адрес перенаправления, настроенный в портал Azure, в форме:
ms-appx-web://microsoft.aad.brokerplugin/YOUR_CLIENT_ID
Если URL-адрес перенаправления не настроен, вы получите ошибку broker_error, примерно такого вида, как (pii). Статус: Response_Status.Status_ApiContractViolation, код ошибки: 3399614473, тег: 557973642.
Если настройка и создание экземпляра были выполнены правильно, то после запуска приложения вы увидите, что брокер аутентификации вступит в работу и позволит пользователю выбрать учетную запись, которую он хочет использовать для аутентификации.
Следует отметить, что если вы перейдете на использование проверки подлинности через брокер, то, если пользователь ранее вошел в систему и состояние входа по-прежнему действительно, вызов acquire_token_interactive по-прежнему приведет к тихой попытке получить токен, и запрос будет показан только при необходимости. Если вы предпочитаете всегда запрашивать запрос, можно использовать этот необязательный параметр prompt="select_account".
Различия между опытом брокера
В зависимости от центра сертификации, указанного при создании экземпляра PublicClientApplication, пользовательский интерфейс брокера может отличаться.
/Потребителей
Используется для аутентификации только с личными учетными записями Microsoft.
/Общие
Используется для проверки подлинности с помощью личных Microsoft учетных записей, а также рабочих и учебных учетных записей.
/Организаций
Используется только для аутентификации с рабочими и учебными учетными записями.
Если login_hint предоставлен, но учетная запись еще не зарегистрирована в WAM, то указание будет автоматически заполнено в поле "Электронная почта" или "Телефон ".
/TENANT_ID
Используется для аутентификации только рабочих и учебных учетных записей в пределах указанного тенанта.
Если login_hint предоставлен, но учетная запись еще не зарегистрирована в WAM, то указание будет автоматически заполнено в поле "Электронная почта" или "Телефон ".