Uso de MSAL Python con un agente de autenticación en macOS

Note

La compatibilidad con el agente de autenticación de macOS se introduce con msal versión 1.31.0.

Usar un agente de autenticación en macOS te permite simplificar la forma en que los usuarios se autentican con Microsoft Entra ID desde tu aplicación, así como beneficiarte de futuras funcionalidades que protegen los tokens de actualización de Microsoft Entra ID frente a la exfiltración y el uso indebido.

Los intermediarios de autenticación no vienen preinstalados en macOS, sino que son aplicaciones desarrolladas por Microsoft, como Portal de empresa. Estas aplicaciones normalmente se instalan cuando un equipo macOS está inscrito en la flota de dispositivos de una empresa a través de una solución de administración de puntos de conexión como Microsoft Intune. Para obtener más información sobre la configuración de dispositivos Apple con la plataforma de identidad de Microsoft, consulte el complemento de inicio de sesión único (SSO) empresarial de Microsoft para dispositivos Apple.

Uso

Para usar el broker, deberá instalar los paquetes relacionados con el broker, además del paquete principal de MSAL disponible en PyPI:

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

Importante

Si los paquetes relacionados con el agente no están instalados y intentará usar el agente de autenticación, obtendrá un error: ImportError: You need to install dependency by: pip install "msal[broker]>=1.31,<2".

Normalmente, en macOS, sus aplicaciones de Python de cliente públicoobtendrían tokens a través del navegador del sistema. Para usar en su lugar los agentes de autenticación instalados en un sistema macOS, deberá pasar un argumento adicional en el constructor 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

Si va a escribir una aplicación multiplataforma, también tendrá que usar enable_broker_on_windows, como se describe en el artículo Uso de MSAL Python con el Administrador de cuentas web.

Además del cambio en el constructor, su aplicación debe admitir URI de redirección específicas del broker. En el caso de las aplicaciones sin firmar , el URI es:

msauth.com.msauth.unsignedapp://auth 

Para las aplicaciones firmadas, el URI de redirección debe ser:

msauth.BUNDLE_ID://auth

Si los URI de redireccionamiento no están configurados correctamente en la configuración de la aplicación dentro del portal de Entra, recibirá un error similar al siguiente:

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

Una vez configurado, puede llamar a acquire_token_interactive para obtener un token.

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

Note

El parent_window_handle parámetro es necesario aunque en macOS no se use. Para las aplicaciones con interfaz gráfica, la ubicación de la ventana de inicio de sesión se determinará según el caso y actualmente no puede asociarse a una ventana específica. En una actualización futura, este parámetro se usará para determinar la ventana principal real .

Almacenamiento en caché de tokens

El intermediario de autenticación se encarga del almacenamiento en caché de los tokens de actualización y de acceso. No es necesario configurar el almacenamiento en caché personalizado.

Versiones y arquitecturas de macOS compatibles

El agente de macOS admite las siguientes configuraciones:

Componente Versiones compatibles
Arquitectura ARM64 (Apple Silicon) y x64 (Intel)
Versión de macOS macOS 10.15 (Catalina) y versiones posteriores

Tip

Se recomienda actualizar a la versión más reciente de macOS para garantizar la compatibilidad con las características de seguridad y las funcionalidades de agente más recientes.