Compartilhar via


Autenticar aplicativos Python nos serviços do Azure durante o desenvolvimento local usando a autenticação agenciada

A autenticação agenciada coleta credenciais do usuário usando o agente de autenticação do sistema para autenticar um aplicativo. Um agente de autenticação do sistema é um aplicativo em execução no computador de um usuário que gerencia os handshakes de autenticação e a manutenção de token para todas as contas conectadas.

A autenticação agenciada oferece os seguintes benefícios:

  • Habilita o SSO (Sign-On Único): Permite que os aplicativos simplifiquem a autenticação dos usuários com a ID do Microsoft Entra e protejam os tokens de atualização da ID do Microsoft Entra contra exfiltração e uso indevido.
  • Segurança aprimorada: Muitos aprimoramentos de segurança são fornecidos com o agente, sem a necessidade de atualizar a lógica do aplicativo.
  • Suporte a recursos aprimorados: Com a ajuda do agente, os desenvolvedores podem acessar recursos avançados de sistema operacional e serviço.
  • Integração do sistema: Aplicativos que usam o plug-and-play do agente com o seletor de conta interno, permitindo que o usuário escolha rapidamente uma conta existente em vez de reentrar nas mesmas credenciais várias vez.
  • Proteção de Token: Garante que os tokens de atualização estejam associados ao dispositivo e permita que os aplicativos adquiram tokens de acesso associados ao dispositivo. Consulte a Proteção de Token.

O Windows fornece um agente de autenticação chamado WAM (Gerenciador de Contas Web). O WAM permite que provedores de identidade, como a ID do Microsoft Entra, conectem-se nativamente ao sistema operacional e forneçam serviços de logon seguros aos aplicativos. A autenticação agenciada habilita o aplicativo para todas as operações permitidas pelas credenciais de logon interativas.

Há suporte para contas pessoais e contas corporativas ou de estudante da Microsoft. Em versões do Windows com suporte, a interface do usuário baseada em navegador padrão é substituída por uma experiência de autenticação mais suave, semelhante a aplicativos internos do Windows.

O macOS não inclui nativamente um agente de autenticação interno. A biblioteca de clientes da Identidade do Azure implementa recursos de autenticação agenciados usando mecanismos específicos da plataforma e pode se integrar a aplicativos como o Microsoft Company Portal quando os dispositivos são gerenciados. Para obter mais informações, consulte o plug-in do Microsoft Enterprise SSO para dispositivos Apple.

O Linux usa o logon único da Microsoft para Linux como seu agente de autenticação.

Configurar o aplicativo para autenticação agenciada

Para habilitar a autenticação agenciada em seu aplicativo, siga estas etapas:

  1. No portal do Azure, navegue até a ID do Microsoft Entra e selecione registros de aplicativo no menu à esquerda.

  2. Selecione o registro do seu aplicativo e depois Autenticação.

  3. Adicione o URI de redirecionamento apropriado ao registro do aplicativo por meio de uma configuração de plataforma:

    1. Em Configurações da plataforma, selecione + Adicionar uma plataforma.

    2. Em Configurar plataformas, selecione o bloco do seu tipo de aplicativo (plataforma) para definir suas configurações, como aplicativos móveis e de área de trabalho.

    3. Em URIs de redirecionamento personalizado, insira o seguinte URI de redirecionamento para sua plataforma:

      Platform URI de redirecionamento
      Windows 10+ ou WSL ms-appx-web://Microsoft.AAD.BrokerPlugin/{your_client_id}
      macOS msauth.com.msauth.unsignedapp://auth para aplicativos sem sinal
      msauth.{bundle_id}://auth para aplicativos assinados
      Linux https://login.microsoftonline.com/common/oauth2/nativeclient

      Substitua {your_client_id} ou {bundle_id} pela ID do aplicativo (cliente) do painel Visão Geral do registro do aplicativo.

    4. Selecione Configurar.

    Para saber mais, consulte Adicionar um URI de redirecionamento a um registro de aplicativo.

  4. De volta ao painel Autenticação, em Configurações avançadas, selecione Sim para Permitir fluxos de clientes públicos.

  5. Selecione Salvar para aplicar as alterações.

  6. Para autorizar o aplicativo para recursos específicos, navegue até o recurso em questão, selecione Permissões de API e habilite o Microsoft Graph e outros recursos que você deseja acessar.

    Importante

    Você também deve ser o administrador do seu locatário para dar consentimento ao seu aplicativo ao fazer logon pela primeira vez.

Atribuir funções

Para executar o código do aplicativo com êxito com a autenticação agenciada, conceda permissões à sua conta de usuário usando o RBAC (controle de acesso baseado em função) do Azure. Atribua uma função apropriada à sua conta de usuário para o serviço relevante do Azure. Por exemplo:

  • Armazenamento de Blobs do Azure: atribuir a função colaborador de dados da conta de armazenamento .
  • Azure Key Vault: atribua a função Key Vault Secrets Officer .

Se um aplicativo for especificado, ele deverá ter permissões de API definidas para user_impersonation no Access Azure Storage (etapa 6 na seção anterior). Essa permissão de API permite que o aplicativo acesse o armazenamento do Azure em nome do usuário conectado depois que o consentimento for concedido durante a entrada.

Implementar o código

O exemplo a seguir demonstra o uso de um InteractiveBrowserBrokerCredential para autenticar com o BlobServiceClient:

  1. Instale os pacotes. pywin32 será usado no Windows para recuperar a janela atualmente em primeiro plano.

    pip install azure-identity-broker pywin32
    
  2. Obtenha uma referência à janela pai na parte superior da qual a caixa de diálogo do seletor de conta deve aparecer. No exemplo de código abaixo, essa será a linha:

    current_window_handle = win32gui.GetForegroundWindow()
    
  3. Crie uma instância de InteractiveBrowserBrokerCredential passando a referência da janela pai. No exemplo de código final, essa será a linha:

    credential = InteractiveBrowserBrokerCredential(parent_window_handle=current_window_handle)
    
  4. Use o credential para acessar o serviço do Azure, que é o Armazenamento de Blobs neste exemplo.

Este é o exemplo de código final:

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)

Para um controle mais exato, como definir um tempo limite, você pode fornecer argumentos específicos para InteractiveBrowserBrokerCredential como timeout.

Para que o código seja executado com êxito, sua conta de usuário deve receber uma função do Azure na conta de armazenamento que permite acesso a contêineres de blob, como Colaborador de Dados da Conta de Armazenamento. Se um aplicativo for especificado, ele deverá ter permissões de API definidas para user_impersonation no Access Azure Storage (etapa 6 na seção anterior). Essa permissão de API permite que o aplicativo acesse o armazenamento do Azure em nome do usuário conectado depois que o consentimento for concedido durante a entrada.

A captura de tela a seguir mostra a experiência de autenticação interativa e agenciada alternativa:

Uma captura de tela que mostra a experiência de entrada do Windows ao usar uma instância InteractiveBrowserCredential habilitada para agente para autenticar um usuário.

Importante

O suporte ao macOS existe nas azure-identity-broker versões 1.3.0 e posteriores.

O exemplo a seguir demonstra o uso de um InteractiveBrowserBrokerCredential para autenticar com o BlobServiceClient.

  1. Instale os pacotes. msal (Biblioteca de Autenticação da Microsoft) é usado para fornecer uma constante para o parent_window_handle parâmetro.

    pip install azure-identity-broker msal
    
  2. Crie uma instância de InteractiveBrowserBrokerCredential passando a referência da janela pai. Isso exige que você obtenha uma referência à janela pai acima da qual o diálogo do seletor de conta deve aparecer, fornecida pelo módulo msal. No exemplo de código abaixo, essa será a linha:

    credential = InteractiveBrowserBrokerCredential(
        parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
    )
    
  3. Use o credential para acessar o serviço do Azure, que é o Armazenamento de Blobs neste exemplo.

Este é o exemplo de código final:

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)

Para obter mais informações sobre como usar o MsAL Python com agentes de autenticação no macOS, consulte Como usar o MSAL Python com um Agente de Autenticação no macOS.

Para um controle mais exato, como definir um tempo limite, você pode fornecer argumentos específicos para InteractiveBrowserBrokerCredential como timeout.

Para que o código seja executado com êxito, sua conta de usuário deve receber uma função do Azure na conta de armazenamento que permite acesso a contêineres de blob, como Colaborador de Dados da Conta de Armazenamento. Se um aplicativo for especificado, ele deverá ter permissões de API definidas para user_impersonation no Access Azure Storage (etapa 6 na seção anterior). Essa permissão de API permite que o aplicativo acesse o armazenamento do Azure em nome do usuário conectado depois que o consentimento for concedido durante a entrada.

A captura de tela a seguir mostra a experiência de autenticação interativa e agenciada alternativa:

Uma captura de tela que mostra a experiência de entrada do macOS ao usar uma instância InteractiveBrowserCredential habilitada para agente para autenticar um usuário.

Importante

O suporte ao Linux existe nas azure-identity-broker versões 1.3.0 e posteriores.

O exemplo a seguir demonstra o uso de um InteractiveBrowserBrokerCredential para autenticar com o BlobServiceClient:

  1. Instale os pacotes. msal (Biblioteca de Autenticação da Microsoft) é usado para fornecer uma constante para o parent_window_handle parâmetro.

    pip install azure-identity-broker msal
    
  2. Crie uma instância de InteractiveBrowserBrokerCredential passando a referência da janela pai. Isso exige que você obtenha uma referência à janela pai em cima da qual a caixa de diálogo do seletor de conta deve aparecer, fornecida pelo módulo msal. No exemplo de código abaixo, essa será a linha:

    credential = InteractiveBrowserBrokerCredential(
        parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
    )
    
  3. Use o credential para acessar o serviço do Azure, que é o Armazenamento de Blobs neste exemplo.

Este é o exemplo de código final:

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)

Verifique se você tem as dependências do Linux instaladas em sua distribuição do Linux antes de executar este exemplo de código. Além disso, há instruções separadas para WSL dependendo da distribuição.

Para um controle mais exato, como definir um tempo limite, você pode fornecer argumentos específicos para InteractiveBrowserBrokerCredential como timeout.

Para que o código seja executado com êxito, sua conta de usuário deve receber uma função do Azure na conta de armazenamento que permite acesso a contêineres de blob, como Colaborador de Dados da Conta de Armazenamento. Se um aplicativo for especificado, ele deverá ter permissões de API definidas para user_impersonation no Access Azure Storage (etapa 6 na seção anterior). Essa permissão de API permite que o aplicativo acesse o armazenamento do Azure em nome do usuário conectado depois que o consentimento for concedido durante a entrada.

O vídeo a seguir mostra a experiência de autenticação interativa e agenciada alternativa:

Um gif animado que mostra a experiência de entrada do Linux ao usar uma instância InteractiveBrowserCredential habilitada para agente para autenticar um usuário.