Поделиться через


Во время локальной разработки аутентифицируйте приложения Python для работы с службами Azure с помощью брокерской аутентификации.

Проверка подлинности через брокер собирает учетные данные пользователя с помощью брокера проверки подлинности системы для проверки подлинности приложения. Брокер проверки подлинности системы — это приложение, работающее на компьютере пользователя, которое управляет подтверждением проверки подлинности и обслуживанием маркеров для всех подключенных учетных записей.

Проверка подлинности с помощью брокера обеспечивает следующие преимущества:

  • Включает один Sign-On (единый вход): Позволяет приложениям упростить проверку подлинности пользователей с помощью идентификатора Microsoft Entra и защитить маркеры обновления идентификатора Microsoft Entra от кражи и неправильного использования.
  • Улучшенная безопасность: Многие улучшения безопасности предоставляются брокером без необходимости обновлять логику приложения.
  • Расширенная поддержка функций: С помощью брокера разработчики могут получить доступ к расширенным возможностям ОС и службы.
  • Интеграция системы: Приложения, использующие подключаемый модуль брокера с встроенным средство выбора учетных записей, позволяют пользователю быстро выбрать существующую учетную запись вместо повторного ввода одинаковых учетных данных.
  • Защита маркеров: Гарантирует, что маркеры обновления привязаны к устройству и позволяют приложениям получать маркеры доступа, привязанные к устройству. См. раздел "Защита маркеров".

Windows предоставляет брокер проверки подлинности с именем диспетчера веб-учетных записей (WAM). WAM позволяет поставщикам удостоверений, таким как идентификатор Microsoft Entra, в собственном коде подключаться к ОС и предоставлять безопасные службы входа в приложения. Проверка подлинности с помощью брокера позволяет приложению выполнять все операции, разрешенные интерактивными учетными данными для входа.

Поддерживаются личные учетные записи Майкрософт и рабочие или учебные учетные записи. В поддерживаемых версиях Windows пользовательский интерфейс на основе браузера по умолчанию заменяется более плавной проверкой подлинности, аналогично встроенным приложениям Windows.

macOS не включает встроенный брокер проверки подлинности. Библиотека клиентских удостоверений Azure реализует функции авторизации брокером с помощью механизмов, специфичных для платформы, и может интегрироваться с такими приложениями, как Корпоративный портал Майкрософт, при управлении устройствами. Дополнительные сведения см. в разделе плагин единого входа Microsoft Enterprise для устройств Apple.

Linux использует единый вход Майкрософт для Linux в качестве брокера проверки подлинности.

Настройка приложения для проверки подлинности с помощью брокера

Чтобы включить проверку подлинности через брокер в приложении, выполните следующие действия.

  1. На портале Azure перейдите к идентификатору Microsoft Entra и выберите регистрации приложений в меню слева.

  2. Выберите регистрацию приложения, а затем выберите проверку подлинности.

  3. Добавьте соответствующий URI перенаправления в регистрацию приложения с помощью конфигурации платформы:

    1. В разделе "Конфигурации платформы" выберите +Добавить платформу.

    2. В разделе "Настройка платформ" выберите плитку для типа приложения (платформы), чтобы настроить его параметры, такие как мобильные и классические приложения.

    3. В пользовательских URI перенаправления введите следующий URI перенаправления для своей платформы:

      Platform Перенаправляющий URI
      Windows 10+ или WSL ms-appx-web://Microsoft.AAD.BrokerPlugin/{your_client_id}
      macOS msauth.com.msauth.unsignedapp://auth для неподписанных приложений
      msauth.{bundle_id}://auth для подписанных приложений
      Линукс https://login.microsoftonline.com/common/oauth2/nativeclient

      Замените {your_client_id} или {bundle_id} на идентификатор приложения (клиента) на панели обзора регистрации приложения.

    4. Выберите и настройте.

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

  4. Вернитесь на панель проверки подлинности в разделе "Дополнительные параметры" выберите "Да ", чтобы разрешить потоки общедоступного клиента.

  5. Выберите Сохранить, чтобы применить изменения.

  6. Чтобы авторизовать приложение для определенных ресурсов, перейдите к нужному ресурсу, выберите Разрешения API и включите Microsoft Graph и другие ресурсы, к которым вы хотите получить доступ.

    Это важно

    Вы также должны быть администратором вашего арендатора, чтобы предоставить согласие приложению, когда вы впервые входите в систему.

Назначьте роли

Чтобы успешно запустить код приложения с проверкой подлинности через брокер, предоставьте учетные записи пользователя разрешения с помощью управления доступом на основе ролей Azure (RBAC). Назначьте соответствующую роль учетной записи пользователя для соответствующей службы Azure. Рассмотрим пример.

  • Хранилище BLOB-объектов Azure: назначение роли участника данных учетной записи хранения .
  • Azure Key Vault: назначьте роль офицера секретов Key Vault .

Если указано приложение, оно должно иметь разрешения API для user_impersonation Доступ к хранилищу Azure (шаг 6 в предыдущем разделе). Это разрешение API позволяет приложению получить доступ к хранилищу Azure от имени пользователя, выполнившего вход после предоставления согласия во время входа.

Реализация кода

В следующем примере показано, как с помощью InteractiveBrowserBrokerCredential выполняется аутентификация в BlobServiceClient.

  1. Установите пакеты. pywin32 будет использоваться в Windows для получения окна в настоящее время на переднем плане.

    pip install azure-identity-broker pywin32
    
  2. Получите ссылку на родительское окно, в верхней части которого должен отображаться диалоговое окно выбора учетной записи. В приведенном ниже примере кода эта строка будет:

    current_window_handle = win32gui.GetForegroundWindow()
    
  3. Создайте экземпляр InteractiveBrowserBrokerCredential, передав ссылку на родительское окно. В последнем примере кода это будет строка:

    credential = InteractiveBrowserBrokerCredential(parent_window_handle=current_window_handle)
    
  4. Используйте credential для доступа к службе Azure, которая в этом примере является хранилищем объектов BLOB.

Ниже приведен окончательный пример кода:

import win32gui
from azure.identity.broker import InteractiveBrowserBrokerCredential
from azure.storage.blob import BlobServiceClient

# Get the handle of the current window
current_window_handle = win32gui.GetForegroundWindow()

# To authenticate and authorize with an app, use the following line to get a credential and
# substitute the <app_id> and <tenant_id> placeholders with the values for your app and tenant.
# credential = InteractiveBrowserBrokerCredential(parent_window_handle=current_window_handle, client_id=<app_id>, tenant_id=<tenant_id>)
credential = InteractiveBrowserBrokerCredential(parent_window_handle=current_window_handle)
client = BlobServiceClient("https://<storage-account-name>.blob.core.windows.net/", credential=credential)

# Prompt for credentials appears on first use of the client
for container in client.list_containers():
    print(container.name)

Для более точного элемента управления, например задания времени ожидания, можно указать конкретные аргументы InteractiveBrowserBrokerCredential , например timeout.

Для успешного выполнения кода учетная запись пользователя должна быть назначена роль в Azure в учетной записи хранилища, которая позволяет получить доступ к контейнерам blob-хранилищ, таким как участник данных учетной записи хранения. Если указано приложение, оно должно иметь разрешения API для user_impersonation Доступ к хранилищу Azure (шаг 6 в предыдущем разделе). Это разрешение API позволяет приложению получить доступ к хранилищу Azure от имени пользователя, выполнившего вход после предоставления согласия во время входа.

На следующем снимку экрана показан альтернативный интерактивный интерфейс проверки подлинности с брокером:

Снимок экрана, на котором показан интерфейс входа Windows при использовании экземпляра InteractiveBrowserCredential с поддержкой брокера для проверки подлинности пользователя.

Это важно

Поддержка macOS существует в azure-identity-broker версиях 1.3.0 и более поздних версиях.

В следующем примере показано использование InteractiveBrowserBrokerCredential для аутентификации в системе BlobServiceClient.

  1. Установите пакеты. msal (Библиотека проверки подлинности Майкрософт) используется для предоставления константы для parent_window_handle параметра.

    pip install azure-identity-broker msal
    
  2. Создайте экземпляр InteractiveBrowserBrokerCredential, передав ссылку на родительское окно. Для этого требуется получить ссылку на родительское окно, в верхней части которого должен отображаться диалоговое окно выбора учетной записи (предоставленное msal модулем). В приведенном ниже примере кода это будет строка:

    credential = InteractiveBrowserBrokerCredential(
        parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
    )
    
  3. Для доступа к службе Azure, которая в этом примере является хранилищем BLOB-объектов, используйте credential.

Ниже приведен окончательный пример кода:

from azure.identity.broker import InteractiveBrowserBrokerCredential
from azure.storage.blob import BlobServiceClient
import msal

credential = InteractiveBrowserBrokerCredential(
    parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
)

client = BlobServiceClient("https://<storage-account-name>.blob.core.windows.net/", credential=credential)

# Prompt for credentials appears on first use of the client
for container in client.list_containers():
    print(container.name)

Дополнительные сведения об использовании MSAL Python с брокерами проверки подлинности в macOS см. в статье "Использование MSAL Python с брокером проверки подлинности в macOS".

Для более точного элемента управления, например задания времени ожидания, можно указать конкретные аргументы InteractiveBrowserBrokerCredential , например timeout.

Для успешного выполнения кода учетная запись пользователя должна быть назначена роль в Azure в учетной записи хранилища, которая позволяет получить доступ к контейнерам blob-хранилищ, таким как участник данных учетной записи хранения. Если указано приложение, оно должно иметь разрешения API для user_impersonation Доступ к хранилищу Azure (шаг 6 в предыдущем разделе). Это разрешение API позволяет приложению получить доступ к хранилищу Azure от имени пользователя, выполнившего вход после предоставления согласия во время входа.

На следующем снимку экрана показан альтернативный интерактивный интерфейс проверки подлинности с брокером:

Снимок экрана, на котором показан интерфейс входа macOS при использовании экземпляра InteractiveBrowserCredential с поддержкой брокера для проверки подлинности пользователя.

Это важно

Поддержка Linux существует в azure-identity-broker версиях 1.3.0 и более поздних версиях.

В следующем примере показано, как с помощью InteractiveBrowserBrokerCredential выполняется аутентификация в BlobServiceClient.

  1. Установите пакеты. msal (Библиотека проверки подлинности Майкрософт) используется для предоставления константы для parent_window_handle параметра.

    pip install azure-identity-broker msal
    
  2. Создайте экземпляр InteractiveBrowserBrokerCredential, передав ссылку на родительское окно. Для этого требуется получить ссылку на родительское окно, в верхней части которого должен отображаться диалоговое окно выбора учетной записи (предоставленное msal модулем). В следующем примере кода эта строка будет следующей:

    credential = InteractiveBrowserBrokerCredential(
        parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
    )
    
  3. Используйте credential для доступа к службе Azure, которая в этом примере является хранилищем BLOB-объектов.

Ниже приведен окончательный пример кода:

from azure.identity.broker import InteractiveBrowserBrokerCredential
from azure.storage.blob import BlobServiceClient
import msal

credential = InteractiveBrowserBrokerCredential(
    parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
)

client = BlobServiceClient("https://<storage-account-name>.blob.core.windows.net/", credential=credential)

# Prompt for credentials appears on first use of the client
for container in client.list_containers():
    print(container.name)

Перед выполнением этого примера кода убедитесь, что в дистрибутиве Linux установлены зависимости Linux . Кроме того, существуют отдельные инструкции для WSL в зависимости от дистрибутива.

Для более точного элемента управления, например задания времени ожидания, можно указать конкретные аргументы InteractiveBrowserBrokerCredential , например timeout.

Для успешного выполнения кода учетная запись пользователя должна быть назначена роль в Azure в учетной записи хранилища, которая позволяет получить доступ к контейнерам blob-хранилищ, таким как участник данных учетной записи хранения. Если указано приложение, оно должно иметь разрешения API для user_impersonation Доступ к хранилищу Azure (шаг 6 в предыдущем разделе). Это разрешение API позволяет приложению получить доступ к хранилищу Azure от имени пользователя, выполнившего вход после предоставления согласия во время входа.

В следующем видео показано альтернативное интерактивное взаимодействие с проверкой подлинности с помощью брокера:

Анимированный GIF-файл, показывающий интерфейс входа Linux при использовании экземпляра InteractiveBrowserCredential с поддержкой брокера для проверки подлинности пользователя.