Utilizar o MSAL Python com um mediador de autenticação no macOS

Note

O suporte ao corretor de autenticação do macOS é introduzido com a msal versão 1.31.0.

Usar brokers de autenticação no macOS permite-lhe simplificar a forma como os seus utilizadores se autenticam no Microsoft Entra ID na sua aplicação, bem como tirar partido de funcionalidades futuras que protejam os tokens de atualização do Microsoft Entra ID contra exfiltração e utilização indevida.

Os intermediários de autenticação não vêm pré-instalados no macOS, mas são aplicações desenvolvidas pela Microsoft, como Portal da Empresa. Estas aplicações são normalmente instaladas quando um computador macOS está integrado na frota de dispositivos de uma empresa através de uma solução de gestão de endpoints como o Microsoft Intune. Para saber mais sobre a configuração de dispositivos Apple com a Microsoft Identity Platform, consulte o plug-in Microsoft Enterprise SSO para dispositivos Apple.

Utilização

Para usar o broker, terá de instalar os pacotes relacionados com o broker além do MSAL core do PyPI:

pip install msal[broker]>=1.31,<2

Importante

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

Normalmente, no macOS, as suas aplicações Python de cliente públicoobteriam tokens através do navegador do sistema. Para usar, em vez disso, brokers de autenticação instalados num sistema macOS, terá de 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 estiver a escrever uma aplicação multiplataforma, também terá de usar enable_broker_on_windows, conforme descrito no artigo Usando MSAL Python com Gestor de Contas Web.

Para além da alteração do construtor, a sua aplicação tem de suportar URIs de redirecionamento específicas do mediador. Para aplicações não assinadas , o URI é:

msauth.com.msauth.unsignedapp://auth 

Para aplicações assinadas, o URI de redirecionamento deve ser:

msauth.BUNDLE_ID://auth

Se os URIs de redirecionamento não estiverem corretamente definidos na configuração da aplicação dentro do portal Entra, receberá um erro deste tipo:

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, pode ligar 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 é obrigatório mesmo que no macOS não seja utilizado. Para aplicações com interface gráfica, a localização do prompt de login será determinada de forma ad-hoc e atualmente não pode ser vinculada a uma janela específica. Numa atualização futura, este parâmetro será usado para determinar a janela principal real.

Armazenamento em cache de tokens

O intermediário de autenticação gere o armazenamento em cache de tokens de atualização e de acesso. Não precisas de configurar cache personalizado.

Versões e arquiteturas suportadas para macOS

O broker do macOS suporta as seguintes configurações:

Component Versões suportadas
Arquitetura ARM64 (Apple Silicon) e x64 (Intel)
Versão macOS macOS 10.15 (Catalina) e posteriores

Sugestão

Recomendamos a atualização para a versão mais recente do macOS para garantir a compatibilidade com as funcionalidades de segurança mais recentes e as funcionalidades do intermediário.