Usando Python MSAL com um Agente de Autenticação no macOS

Note

O suporte ao broker de autenticação do macOS foi adicionado na versão msal 1.31.0.

O uso de um broker de autenticação no macOS permite simplificar a maneira como os usuários se autenticam no Microsoft Entra ID por meio do seu aplicativo, além de aproveitar funcionalidades futuras que protegem os tokens de atualização do Microsoft Entra ID contra exfiltração e uso indevido.

Os agentes de autenticação não são pré-instalados no macOS, mas são aplicativos desenvolvidos por Microsoft, como Portal da Empresa. Esses aplicativos geralmente são instalados quando um computador macOS é inscrito no parque de dispositivos de uma empresa por meio de uma solução de gerenciamento de endpoints, como o Microsoft Intune. Para saber mais sobre a configuração de dispositivos Apple com a Microsoft Identity Platform, consulte plug-in de SSO corporativo da Microsoft para dispositivos Apple.

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.31,<2

Importante

Se os pacotes relacionados ao agente não estiverem instalados e você tentar usar o agente de autenticação, receberá um erro: ImportError: You need to install dependency by: pip install "msal[broker]>=1.31,<2".

Normalmente, no macOS, seus aplicativos Python de cliente públicoobteriam tokens por meio do navegador do sistema. Para usar, em vez disso, os brokers de autenticação instalados em um sistema macOS, será necessário passar um argumento adicional no construtor PublicClientApplication: enable_broker_on_mac

from msal import PublicClientApplication
 
app = PublicClientApplication(
    "CLIENT_ID",
    authority="https://login.microsoftonline.com/common",
    enable_broker_on_mac =True)

Importante

Se você estiver escrevendo um aplicativo multiplataforma, também precisará usarenable_broker_on_windows, conforme descrito no artigo Usando o Python msal com o Gerenciador de Contas Web.

Além da alteração no construtor, seu aplicativo precisa oferecer suporte a URIs de redirecionamento específicas do broker. Para aplicativos não assinados , o URI é:

msauth.com.msauth.unsignedapp://auth 

Para aplicativos assinados, o URI de redirecionamento deve ser:

msauth.BUNDLE_ID://auth

Se as URIs de redirecionamento não estiverem definidas corretamente na configuração do aplicativo no portal do Entra, você receberá um erro como este:

Error detected... 
tag=508170375
context=AADSTS50011 Description: (pii), Domain: MSAIMSIDOAuthErrorDomain.Error was thrown in location: Broker 
errorCode=-51411 
status=Response_Status.Status_Unexpected 

Depois de configurado, você pode chamar acquire_token_interactive para adquirir um token.

result = app.acquire_token_interactive(["User.ReadBasic.All"],
                    parent_window_handle=app.CONSOLE_WINDOW_HANDLE)

Note

O parent_window_handle parâmetro é necessário mesmo que no macOS ele não seja usado. Para aplicativos gui, o local do prompt de logon será determinado ad-hoc e atualmente não pode ser associado a uma janela específica. Em uma atualização futura, esse parâmetro será usado para determinar a janela pai real.

Armazenamento de token em cache

O intermediário de autenticação gerencia o cache dos tokens de atualização e de acesso. Você não precisa configurar o cache personalizado.

Versões e arquiteturas do macOS com suporte

O agente macOS dá suporte às seguintes configurações:

Componente Versões suportadas
Arquitetura ARM64 (Apple Silicon) e x64 (Intel)
Versão do macOS macOS 10.15 (Catalina) e posterior

Dica

É recomendável atualizar para a versão mais recente do macOS para garantir a compatibilidade com os recursos de segurança e os recursos do agente mais recentes.