PublicClientApplication Класс

То же самое, что <xref:ClientApplication.__init__>и этот client_credential параметр, должен остаться None.

Note

Что такое брокер и почему он используется?

Брокер — это компонент, установленный на устройстве.

Брокер неявно предоставляет устройству удостоверение. С помощью брокера

устройство становится фактором, который может удовлетворить MFA (многофакторная проверка подлинности).

Этот фактор станет обязательным

Если администратор клиента включает соответствующую политику условного доступа (ЦС).

Присутствие брокера позволяет платформа удостоверений Майкрософт

чтобы получить более высокую уверенность в том, что маркеры выдаются на устройство,

и это более безопасно.

Дополнительным преимуществом брокера является:

он выполняется как длительный процесс с ОС устройства,

и поддерживает собственный кэш,

чтобы приложения с поддержкой брокера (даже интерфейс командной строки)

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

Как использовать брокер?

Для любого сочетания следующих параметров согласия можно задать значение true:

Флажок "Согласие"

Если приложение будет работать в

Приложение зарегистрировало это в качестве URI перенаправления платформы компьютеров в портал Azure

enable_broker_on_windows

Windows 10+

ms-appx-web://Microsoft. AAD. BrokerPlugin/your_client_id

enable_broker_on_wsl

WSL

ms-appx-web://Microsoft. AAD. BrokerPlugin/your_client_id

enable_broker_on_mac

Mac с установленным Корпоративный портал

msauth.com.msauth.unsignedapp://auth

enable_broker_on_linux

Linux с установленным Intune

https://login.microsoftonline.com/common/oauth2/nativeclient (НЕОБХОДИМО включить)

Установка зависимостей брокера,

Например, pip install msal[broker]>=1.33,2<.

Тестирование с помощью acquire_token_interactive() и acquire_token_silent().

Резервное поведение поддержки брокера MSAL Python

MSAL завершит ошибку или автоматически откатится к потокам, не являющихся брокерами.

MSAL будет игнорировать enable_broker_... и обход брокера

для этих потоков проверки подлинности, которые, как известно, не поддерживаются брокером.

К ним относятся ADFS, B2C и т. д.

Для других сценариев "возможно использовать брокер" см. ниже.

Ошибки MSAL при отказе разработчика приложения использовать брокер

но не установлен прямой пакет зависимостей "среднего уровня".

Сообщение об ошибке позволяет разработчику приложений объявить правильную зависимость

msal[broker].

Мы ошибаемся здесь, так как ошибка применима для разработчиков приложений.

MSAL автоматически "деактивирует" брокера и откат к не-брокеру,

При выборе зависимостей, установленных еще не удалось инициализировать.

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

или базовый компонент брокера каким-то образом недоступен.

Здесь нет большого количества разработчиков приложений или конечный пользователь.

В конечном итоге политика условного доступа должна быть

принудительно переключение пользователя на другое устройство.

Ошибки MSAL при выборе брокера, установке, инициализации,

но последующие запросы маркера завершилось ошибкой.

Конструктор

PublicClientApplication(client_id, client_credential=None, *, enable_broker_on_windows=None, enable_broker_on_mac=None, enable_broker_on_linux=None, enable_broker_on_wsl=None, **kwargs)

Параметры

Имя Описание
enable_broker_on_windows
Обязательно
<xref:boolean>

Этот параметр действует только в том случае, если приложение работает на Windows 10+. Этот параметр по умолчанию имеет значение None, что означает, что MSAL не будет использовать брокер.

Новые возможности MSAL Python 1.25.0.

enable_broker_on_mac
Обязательно
<xref:boolean>

Этот параметр действует только в том случае, если ваше приложение работает на Компьютере Mac. Этот параметр по умолчанию имеет значение None, что означает, что MSAL не будет использовать брокер.

Новые возможности MSAL Python 1.31.0.

enable_broker_on_linux
Обязательно
<xref:boolean>

Этот параметр действует только в том случае, если ваше приложение работает в Linux, включая WSL. Этот параметр по умолчанию имеет значение None, что означает, что MSAL не будет использовать брокер.

Новые возможности MSAL Python 1.33.0.

enable_broker_on_wsl
Обязательно
<xref:boolean>

Этот параметр действует только в том случае, если приложение работает в WSL. Этот параметр по умолчанию имеет значение None, что означает, что MSAL не будет использовать брокер.

Новые возможности MSAL Python 1.33.0.

client_id
Обязательно
client_credential
Значение по умолчанию: None

Параметры Keyword-Only

Имя Описание
enable_broker_on_windows
Значение по умолчанию: None
enable_broker_on_mac
Значение по умолчанию: None
enable_broker_on_linux
Значение по умолчанию: None
enable_broker_on_wsl
Значение по умолчанию: None

Методы

acquire_token_by_device_flow

Получение маркера объектом потока устройства с настраиваемым эффектом опроса.

acquire_token_interactive

Интерактивное получение маркера через локальный браузер.

Предварительные требования. В портал Azure настройте универсальный код ресурса (URI перенаправления) приложения "Мобильный и классический" в качествеhttp://localhost. Если вы решили использовать брокер во время PublicClientApplication создания, приложению также потребуется этот универсальный код ресурса (URI перенаправления): ms-appx-web://Microsoft.AAD.BrokerPlugin/YOUR_CLIENT_ID

initiate_device_flow

Инициируйте экземпляр потока устройств, который будет использоваться в acquire_token_by_device_flow.

acquire_token_by_device_flow

Получение маркера объектом потока устройства с настраиваемым эффектом опроса.

acquire_token_by_device_flow(flow, claims_challenge=None, **kwargs)

Параметры

Имя Описание
flow
Обязательно

Ранее созданный дикт.initiate_device_flow По умолчанию опрос этого метода блокирует текущий поток. Вы можете прервать цикл опроса в любое время, изменив значение ключа потока "expires_at" на 0.

claims_challenge

Параметр claims_challenge запрашивает определенные утверждения, запрашиваемые поставщиком ресурсов, в виде директивы claims_challenge в заголовке www-authentication, возвращаемого из конечной точки UserInfo и (или) маркера идентификатора и (или) маркера доступа. Это строка объекта JSON, содержащего списки утверждений, запрашиваемых из этих расположений.

Значение по умолчанию: None

Возвращаемое значение

Тип Описание

Дикт, представляющий ответ JSON из Microsoft Entra:

  • Успешный ответ будет содержать ключ "access_token",

  • Ответ на ошибку будет содержать "error" и обычно "error_description".

acquire_token_interactive

Интерактивное получение маркера через локальный браузер.

Предварительные требования. В портал Azure настройте универсальный код ресурса (URI перенаправления) приложения "Мобильный и классический" в качествеhttp://localhost. Если вы решили использовать брокер во время PublicClientApplication создания, приложению также потребуется этот универсальный код ресурса (URI перенаправления): ms-appx-web://Microsoft.AAD.BrokerPlugin/YOUR_CLIENT_ID

acquire_token_interactive(scopes, prompt=None, login_hint=None, domain_hint=None, claims_challenge=None, timeout=None, port=None, extra_scopes_to_consent=None, max_age=None, parent_window_handle=None, on_before_launching_ui=None, auth_scheme=None, **kwargs)

Параметры

Имя Описание
scopes
Обязательно

Это список строк с учетом регистра.

prompt
str

По умолчанию значение запроса не будет отправлено, даже строковое значение не будет отправлено "none". Необходимо явно указать значение. Допустимые значения — это константы, определенные в <xref:msal.Prompt>.

Значение по умолчанию: None
login_hint
str

Optional. Идентификатор пользователя. Как правило, имя участника-пользователя (UPN).

Значение по умолчанию: None
domain_hint

Может быть одним из "потребителей" или "организаций" или домена клиента "contoso.com". Если он включен, он пропустит процесс обнаружения на основе электронной почты, который пользователь проходит на странице входа, что приводит к немного более упрощенной пользовательской среде. Дополнительные сведения о возможных значениях, доступных в документации по потоку проверки подлинности и domain_hint документации.

Значение по умолчанию: None
claims_challenge

Параметр claims_challenge запрашивает определенные утверждения, запрашиваемые поставщиком ресурсов, в виде директивы claims_challenge в заголовке www-authentication, возвращаемого из конечной точки UserInfo и (или) маркера идентификатора и (или) маркера доступа. Это строка объекта JSON, который содержит списки утверждений, запрашиваемых из этих расположений.

Значение по умолчанию: None
timeout
int

Этот метод блокирует текущий поток. Этот параметр задает значение времени ожидания в секундах. Значение None по умолчанию означает неограниченное ожидание.

Значение по умолчанию: None
port
int

Порт, используемый для прослушивания входящего ответа проверки подлинности. По умолчанию мы будем использовать выделенный системой порт. (Остальная часть redirect_uri жестко закодирована как http://localhost.)

Значение по умолчанию: None
extra_scopes_to_consent

"Дополнительные области согласия" — это концепция, доступная только в Microsoft Entra. Он ссылается на другие ресурсы, для которых может потребоваться предоставить согласие, в том же взаимодействии, но для которого вы не вернетесь маркер для этой конкретной операции.

Значение по умолчанию: None
max_age
int

Необязательно. Максимальный возраст проверки подлинности. Указывает допустимое время в секундах с момента последнего проверки подлинности End-User. Если истекшее время больше этого значения, платформа удостоверений Майкрософт будет активно повторно проходить проверку подлинности конечного пользователя.

MSAL Python также автоматически проверяет auth_time в маркере идентификатора.

Новые возможности версии 1.15.

Значение по умолчанию: None
parent_window_handle
int

Необязательно.

  • Если приложение не будет использовать брокер, вам не нужно предоставлять здесь.parent_window_handle

  • Если приложение согласилось использовать брокер, parent_window_handle требуется.

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

    • Если приложение является консольным приложением, работающим в системе Windows или Mac, можно использовать заполнительPublicClientApplication.CONSOLE_WINDOW_HANDLE.

Большинство сценариев Python являются консольными приложениями.

Новая версия 1.20.0.

Значение по умолчанию: None
on_before_launching_ui
<xref:function>

Обратный вызов с формой lambda ui="xyz", **kwargs: print("A {} will be launched".format(ui)), где ui будет либо браузер" или "брокер". Его можно использовать для информирования конечного пользователя о ожидании всплывающего окна.

Новая версия 1.20.0.

Значение по умолчанию: None
auth_scheme

Вы можете предоставить msal.auth_scheme.PopAuthScheme объект, чтобы MSAL получил маркер проверки владения (POP).

Новая версия 1.26.0.

Значение по умолчанию: None

Возвращаемое значение

Тип Описание
  • Дикт, содержащий ключ error, и обычно содержит ключ access_token.

  • Дикт, содержащий ключ error, при сбое обновления маркера.

initiate_device_flow

Инициируйте экземпляр потока устройств, который будет использоваться в acquire_token_by_device_flow.

initiate_device_flow(scopes=None, *, claims_challenge=None, **kwargs)

Параметры

Имя Описание
scopes

Области, запрошенные для доступа к защищенному API (ресурсу).

Значение по умолчанию: None

Параметры Keyword-Only

Имя Описание
claims_challenge
Значение по умолчанию: None

Возвращаемое значение

Тип Описание

Дикт, представляющий только что созданный объект Device Flow.

  • Успешный ответ будет содержать ключ "user_code", среди прочего

  • Ответ на ошибку будет содержать некоторые другие пары "ключ-значение", доступные для чтения.

Атрибуты

CONSOLE_WINDOW_HANDLE

CONSOLE_WINDOW_HANDLE = <object object>

DEVICE_FLOW_CORRELATION_ID

DEVICE_FLOW_CORRELATION_ID = '_correlation_id'