Habilitación del inicio de sesión único entre aplicaciones en Android mediante MSAL

El inicio de sesión único (SSO) permite a los usuarios escribir solo sus credenciales una vez y hacer que esas credenciales funcionen automáticamente en todas las aplicaciones. Mejora la experiencia del usuario y mejora la seguridad al reducir el número de contraseñas que los usuarios necesitan administrar, lo que reduce el riesgo de fatiga de contraseñas y vulnerabilidades asociadas.

La Plataforma de identidad de Microsoft y la Biblioteca de autenticación de Microsoft (MSAL) le ayudan a habilitar el inicio de sesión único en todo el conjunto de aplicaciones. Al habilitar la función Broker, puedes ampliar el SSO a todo el dispositivo.

En este procedimiento, aprenderá a configurar los kits de desarrollo de software (SDK) usados por la aplicación para proporcionar SSO a los clientes.

Prerequisites

En este procedimiento se supone que sabe cómo:

  • Aprovisione la aplicación. Para obtener más información, consulte las instrucciones para crear una aplicación en el tutorial de Android.
  • Integración de la aplicación con MSAL para Android

Métodos para SSO

Hay dos formas de que las aplicaciones que usan MSAL para Android consigan SSO:

  • A través de una aplicación de agente

  • A través del explorador del sistema

    Se recomienda usar una aplicación de agente para ventajas como el inicio de sesión único en todo el dispositivo, la administración de cuentas y el acceso condicional. Sin embargo, requiere que los usuarios descarguen aplicaciones adicionales.

SSO mediante autenticación intermediada

Se recomienda usar uno de los agentes de autenticación de Microsoft para participar en el inicio de sesión único en todo el dispositivo y cumplir las directivas de acceso condicional de la organización. La integración con un agente proporciona las siguientes ventajas:

  • SSO de dispositivo
  • Acceso condicional para:
    • Protección de aplicaciones de Intune
    • Registro del dispositivo (vinculación al lugar de trabajo)
    • Administración de dispositivos móviles
  • Administración de cuentas en todo el dispositivo
    • a través de AccountManager & Account Settings de Android
    • "Cuenta profesional": tipo de cuenta personalizada

En Android, el agente de autenticación de Microsoft es un componente que se incluye en la Microsoft Authenticator, Intune Portal de empresa y Vincular a aplicaciones de Windows.

En el diagrama siguiente se muestra la relación entre la aplicación, MSAL y los agentes de autenticación de Microsoft.

Diagrama que muestra cómo se relaciona una aplicación con MSAL, aplicaciones de agente y el administrador de cuentas de Android.

Instalación de aplicaciones que hospedan un agente

El propietario del dispositivo puede instalar aplicaciones de hospedaje de broker desde su tienda de aplicaciones (normalmente Google Play Store) en cualquier momento. Sin embargo, algunas API (recursos) están protegidas por directivas de acceso condicional que requieren que los dispositivos sean:

  • Registrado (unido al área de trabajo) o
  • Inscrito en la administración de dispositivos o
  • Inscrito en Intune App Protection

Si el dispositivo con los requisitos mencionados anteriormente no tiene instalada una aplicación de agente, MSAL indica al usuario que instale uno tan pronto como la aplicación intente obtener un token de forma interactiva. A continuación, la aplicación llevará al usuario a través de los pasos para que el dispositivo sea compatible con la directiva necesaria. Si no hay ningún requisito de directiva o el usuario inicia sesión con cuenta Microsoft, no se requiere la instalación de la aplicación Broker.

Efectos de la instalación y desinstalación de un agente

Cuando se instala un agente

Cuando se instala un agente en un dispositivo, es el agente el que administra todas las solicitudes de token interactivas posteriores (llamadas a acquireToken()), en lugar de MSAL localmente. Cualquier estado de SSO disponible anteriormente para MSAL no está disponible para el agente. Como resultado, el usuario debe autenticarse de nuevo o seleccionar una cuenta de la lista existente de cuentas conocidas para el dispositivo.

La instalación de un agente no requiere que el usuario vuelva a iniciar sesión. Solo cuando el usuario necesite resolver un MsalUiRequiredException, la siguiente solicitud irá al intermediario. MsalUiRequiredException puede producirse por varias razones y debe resolverse de forma interactiva. Por ejemplo:

  • El usuario cambió la contraseña asociada a su cuenta.
  • La cuenta del usuario ya no cumple una directiva de acceso condicional.
  • El usuario revoca su consentimiento para que la aplicación esté asociada a su cuenta.

Varios agentes : si hay varios agentes instalados en un dispositivo, MSAL identifica el agente activo por sí mismo para completar el proceso de autenticación.

Cuando se desinstala un broker

Si solo hay una aplicación de broker instalada y se desinstala, el usuario debe volver a iniciar sesión. Al desinstalar el agente activo, se quita la cuenta y los tokens asociados del dispositivo.

Si Microsoft Authenticator, se desinstala Intune Portal de empresa o Vínculo a Windows, es posible que se le pida al usuario que vuelva a iniciar sesión.

Integración con un bróker

Generar un URI de redirección para un broker

Debe registrar un URI de redirección compatible con el intermediario. El URI de redirección del intermediario debe incluir el nombre del paquete de tu aplicación y la representación codificada en Base64 de la firma de tu aplicación.

El formato del URI de redirección es: msauth://<yourpackagename>/<base64urlencodedsignature>

Puede usar keytool para generar un hash de firma codificado en Base64 mediante las claves de firma de la aplicación y, a continuación, generar el URI de redireccionamiento mediante ese hash.

Linux y macOS:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Windows:

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

Una vez que haya generado un hash de firma con keytool, use el portal de Azure para generar el URI de redirección:

  1. Inicie sesión en el Centro de administración de Microsoft Entra siendo al menos un Administrador de aplicaciones en la nube.
  2. Si tiene acceso a varios inquilinos, use el icono Configuración en el menú superior para cambiar al inquilino que contiene el registro de la aplicación desde el menú Directorios y suscripciones.
  3. Vaya a Entra ID>Registros de aplicaciones.
  4. Seleccione la aplicación y, a continuación, seleccione AuthenticationAdd a platformAndroid (> una plataforma >Android).
  5. En el panel Configurar la aplicación android que se abre, escriba el hash de firma que generó anteriormente y un nombre de paquete.
  6. Seleccione el botón Configurar.

El URI de redirección se genera automáticamente y se muestra en el campo URI de redirección del panel de configuración de Android.

Para obtener más información sobre cómo firmar la aplicación, consulta Firmar la aplicación en la Guía del usuario de Android Studio.

Configuración de MSAL para usar un agente

Para usar un agente en la aplicación, debe confirmar que ha configurado la redirección del agente. Por ejemplo, para incluir el URI de redirección habilitado para el agente (e indicar que lo ha registrado), incluya las siguientes opciones en el archivo de configuración de MSAL:

"redirect_uri" : "<yourbrokerredirecturi>",
"broker_redirect_uri_registered": true

MSAL se comunica con el agente de dos maneras:

  • Servicio vinculado al intermediario
  • Android AccountManager

MSAL usa primero el servicio enlazado al agente porque la llamada a este servicio no requiere ningún permiso de Android. Si falla la vinculación al servicio vinculado, MSAL usa la API AccountManager de Android. MSAL solo lo hace si a tu aplicación ya se le ha concedido el permiso "READ_CONTACTS".

Si recibe un MsalClientException con código de error "BROKER_BIND_FAILURE", hay dos opciones:

  • Pida al usuario que deshabilite la optimización de energía para la aplicación Microsoft Authenticator y el Portal de empresa de Intune.
  • Pida al usuario que conceda el "READ_CONTACTS" permiso

Verificar la integración del broker

Es posible que no esté claro inmediatamente que la integración del agente funciona, pero puede usar los pasos siguientes para comprobar lo siguiente:

  1. En tu dispositivo Android, completa una petición mediante el broker.
  2. En la configuración del dispositivo Android, busque una cuenta recién creada correspondiente a la cuenta con la que se ha autenticado. La cuenta debe ser de tipo Cuenta profesional.

Puede quitar la cuenta de la configuración si desea repetir la prueba.

SSO mediante el navegador del sistema

Las aplicaciones Android tienen la opción de usar el WEBVIEW, el navegador del sistema o Chrome Custom Tabs para la experiencia de usuario de autenticación. Si la aplicación no usa la autenticación mediada, debe usar el navegador del sistema en lugar de la vista web nativa para lograr el inicio de sesión único.

Agentes de autorización

Elegir una estrategia específica para los agentes autorizadores es importante y supone una funcionalidad adicional que las aplicaciones pueden personalizar. Se recomienda usar "WEBVIEW". Para más información sobre otros valores de configuración (consulte Descripción del archivo de configuración de MSAL de Android.

MSAL permite la autorización mediante un WEBVIEW, o el navegador del sistema. La imagen siguiente muestra cómo se ve usando el WEBVIEW, o el navegador del sistema con CustomTabs o sin CustomTabs:

Ejemplos de inicio de sesión de MSAL

Implicaciones del inicio de sesión único

Si la aplicación usa una estrategia de WEBVIEW sin integrar la autenticación mediada en su aplicación, los usuarios no tendrán una experiencia de inicio de sesión único (SSO) en todo el dispositivo ni entre aplicaciones nativas y aplicaciones web.

Las aplicaciones se pueden integrar con MSAL para usar BROWSER para autorizar. A diferencia de WEBVIEW, BROWSER comparten un almacén de cookies con el navegador predeterminado del sistema, lo que reduce la necesidad de iniciar sesión en la web o en otras aplicaciones nativas integradas con Custom Tabs.

Si la aplicación usa MSAL con un agente como Microsoft Authenticator, Intune Portal de empresa o Vínculo a Windows, los usuarios pueden tener experiencia de inicio de sesión único entre aplicaciones si tienen un inicio de sesión activo con una de las aplicaciones.

Nota:

MSAL con broker utiliza WebView y proporciona SSO para todas las aplicaciones que usan la biblioteca MSAL y participan en la autenticación mediante broker. El estado de SSO del broker no se extiende a otras aplicaciones que no usan MSAL.

WebView

Para usar webView en la aplicación, coloque la siguiente línea en el JSON de configuración de la aplicación que se pasa a MSAL:

"authorization_user_agent" : "WEBVIEW"

Cuando se usa la aplicación WEBVIEW, el usuario inicia sesión directamente en la aplicación. Los tokens se mantienen en el espacio aislado de la aplicación y no están disponibles fuera del archivo jar de cookies de la aplicación. Como resultado, el usuario no puede tener experiencia de SSO entre aplicaciones a menos que las aplicaciones se integren con la aplicación de Microsoft Authenticator, Intune Portal de empresa o Vincular a Windows.

Sin embargo, WEBVIEW proporciona la capacidad de personalizar la apariencia de la interfaz de usuario de inicio de sesión. Consulte Android WebViews para obtener más información sobre cómo realizar esta personalización.

Navegador

Se recomienda usar WEBVIEW, aunque se proporciona la opción de usar el explorador y una estrategia de pestañas personalizadas . Puede indicar explícitamente esta estrategia mediante la siguiente configuración JSON en el archivo de configuración personalizado:

"authorization_user_agent" : "BROWSER"

Use este enfoque para proporcionar experiencia de SSO a través del explorador del dispositivo. MSAL usa un almacén compartido de cookies, lo que permite que otras aplicaciones nativas o aplicaciones web disfruten de SSO en el dispositivo usando la cookie de sesión persistente que establece MSAL.

Heurística de selección del explorador

Dado que es imposible que MSAL especifique el paquete exacto del explorador que se va a usar en cada una de las amplias gamas de teléfonos Android, MSAL implementa una heurística de selección del explorador que intenta proporcionar el mejor inicio de sesión único entre dispositivos.

MSAL recupera principalmente el explorador predeterminado del administrador de paquetes y comprueba si se encuentra en una lista probada de exploradores seguros. Si no es así, MSAL recurre al uso de la vista web en lugar de iniciar otro explorador no predeterminado desde la lista segura. El explorador predeterminado se elige independientemente de si admite pestañas personalizadas. Si el explorador admite pestañas personalizadas, MSAL inicia la pestaña personalizada. Las pestañas personalizadas tienen una apariencia más cercana a una aplicación WebView y permiten la personalización básica de la interfaz de usuario. Consulte Custom Tabs en Android para obtener más información.

Si no hay paquetes de explorador en el dispositivo, MSAL usa WebView de la aplicación. Si no se cambia la configuración predeterminada del dispositivo, se debe iniciar el mismo explorador para cada inicio de sesión para garantizar la experiencia de SSO.

Exploradores probados

Se han probado los siguientes exploradores para ver si redirigen correctamente al "redirect_uri" especificado en el archivo de configuración:

Dispositivo Explorador integrado Cromo Ópera Microsoft Edge Explorador UC Firefox
Nexus 4 (API 17) pass pass no aplicable no aplicable no aplicable no aplicable
Samsung S7 (API 25) paso1 pass pass pass error pass
Vivo (API 26) pass pass pass pass pass error
Píxel 2 (API 26) pass pass pass pass error pass
Oppo pass no aplicable2 no aplicable no aplicable no aplicable no aplicable
OnePlus (API 25) pass pass pass pass error pass
Nexus (API 28) pass pass pass pass error pass
MI pass pass pass pass error pass

1El explorador integrado de Samsung es Samsung Internet.
2El explorador predeterminado no se puede cambiar dentro de la configuración del dispositivo Oppo.

Pasos siguientes

El modo de dispositivo compartido para dispositivos Android permite configurar un dispositivo Android para que varios empleados puedan compartirlo fácilmente.

Para obtener más información sobre las aplicaciones de agente, consulte: