Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Se você estiver criando um aplicativo Windows, talvez considere simplificar a autenticação dos usuários com a ajuda de um agente de autenticação. O WAM (Gerenciador de Contas Web) é um agente de autenticação que funciona com Python MSAL. O WAM só está disponível em Windows 10 e superior, bem como Windows Server 2019 e superior.
Para obter mais informações sobre os benefícios de usar um agente de autenticação, consulte o que é um agente na documentação do MSAL.NET.
Usage
Para usar o broker, você precisará instalar os pacotes relacionados ao broker, além do pacote principal do MSAL disponível no PyPI:
pip install msal[broker]>=1.20,<2
Se os pacotes relacionados ao broker não estiverem instalados e você tentar usar o broker de autenticação, receberá o erro ImportError: Você precisa instalar a dependência com: pip install "msal[broker]>=1.20,<2".
Em seguida, instancie um novo PublicClientApplication e defina enable_broker_on_windows para True. Isso garantirá que a MSAL tente se comunicar com o WAM em vez de abrir uma nova janela do navegador. Se você estiver desenvolvendo um aplicativo multiplataforma, também precisará usar enable_broker_on_mac, conforme descrito no artigo Usando o MSAL Python com um agente de autenticação no macOS.
from msal import PublicClientApplication
app = PublicClientApplication(
"CLIENT_ID",
authority="https://login.microsoftonline.com/common",
enable_broker_on_windows=True)
Agora você pode adquirir um token chamando acquire_token_interactive e especificando um identificador da janela pai por meio de parent_window_handle:
result = app.acquire_token_interactive(["User.ReadBasic.All"],
parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
Um identificador de janela pai é exigido pelo WAM para garantir que a caixa de diálogo seja mostrada corretamente na parte superior da janela de solicitação. A MSAL não infere isso diretamente devido ao fato de que há muitas variáveis que podem influenciar a janela à qual o WAM precisa se associar, e os desenvolvedores que criam aplicativos são mais adequados para decidir qual janela deve ser.
Para aplicativos de console, a MSAL facilita isso ao oferecer uma solução pronta para uso para obter o manipulador da janela do terminal - CONSOLE_WINDOW_HANDLE. Para aplicativos da área de trabalho, mais trabalho com a API Windows pode ser necessário para obter o identificador de janela. Pacotes auxiliares, como pywin32 , podem ajudar com chamadas à API.
Antes de executar seu aplicativo, configure a URL de redirecionamento para o aplicativo da área de trabalho:
Para usar o agente de Windows, seu aplicativo precisa ter a URL de redirecionamento correta configurada no portal do Azure, na forma de:
ms-appx-web://microsoft.aad.brokerplugin/YOUR_CLIENT_ID
Se a URL de redirecionamento não estiver configurada, você receberá um broker_error semelhante a (pii). Status: Response_Status.Status_ApiContractViolation, Código de erro: 3399614473, Tag: 557973642.
Se a configuração e a instanciação estiverem corretas, depois de executar o aplicativo, você deverá ver o agente de autenticação entrar em ação e permitir que o usuário selecione a conta com a qual deseja autenticar.
Vale a pena observar que, se você alternar para o uso da autenticação baseada em agente, se o usuário tiver sido conectado anteriormente e o estado conectado ainda for válido, a chamada acquire_token_interactive ainda resultará em uma tentativa silenciosa de adquirir um token e somente solicitará quando necessário. Se você preferir sempre exibir uma solicitação, poderá usar esse parâmetro opcional prompt="select_account".
Diferenças de experiência do agente
Dependendo da autoridade especificada ao instanciar PublicClientApplication, a interface do usuário do corretor pode ser diferente.
/Consumidores
Usado para autenticação somente com contas de Microsoft pessoais.
/common
Usado para autenticação com contas de Microsoft pessoais, bem como contas corporativas e de estudante.
/Organizações
Usado para autenticação apenas com contas corporativas e escolares.
Se login_hint for fornecido, mas a conta ainda não estiver registrada no WAM, essa informação será preenchida automaticamente no campo Email ou telefone.
/TENANT_ID
Usado somente para autenticar com contas corporativas e escolares dentro do locatário especificado.
Se login_hint for fornecido, mas a conta ainda não estiver registrada no WAM, a dica será preenchida automaticamente no campo Email ou telefone .