Habilitación de SSO entre aplicaciones en Android mediante MSAL

El inicio de sesión único (SSO) permite a los usuarios escribir sus credenciales una sola vez y que las credenciales funcionen automáticamente en otras aplicaciones.

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 su propio conjunto de aplicaciones. Con las aplicaciones de capacidad de agente y Authenticator, puede extender el inicio de sesión único a todo el dispositivo.

En este procedimiento aprenderá a configurar los SDK usados por la aplicación para proporcionar SSO a sus clientes.

Requisitos previos

En este procedimiento se supone que sabe cómo:

Métodos de inicio de sesión único

Hay dos maneras de que las aplicaciones que usan MSAL para Android consigan el inicio de sesión único:

  • 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 obtener 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.

Inicio de sesión único a través de la autenticación con agente

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

  • Inicio de sesión único del dispositivo
  • Acceso condicional para:
    • Intune App Protection
    • Registro de dispositivos (Workplace Join)
    • Administración de dispositivos móviles
  • Administración de cuentas en todo el dispositivo
    • Mediante la configuración y administración de cuentas de Android
    • "Cuenta profesional": tipo de cuenta personalizada

En Android, el agente de autenticación de Microsoft es un componente que se incluye con Microsoft Authenticator y el Portal de empresa de Intune.

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

Diagram showing how an application relates to MSAL, broker apps, and the Android account manager.

Instalación de aplicaciones que hospedan un agente

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

  • registrados (unidos al área de trabajo); o
  • inscritos en la administración de dispositivos; o
  • inscritos en Intune App Protection.

Si un dispositivo aún no tiene instalada una aplicación de agente, MSAL indica al usuario que instale una en cuanto la aplicación intente obtener un token de forma interactiva. A continuación, la aplicación deberá guiar al usuario por los pasos necesarios para que el dispositivo sea compatible con la directiva requerida.

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 tiene que autenticarse de nuevo o seleccionar una cuenta de la lista de cuentas existente que conoce el dispositivo.

La instalación de un agente no requiere que el usuario vuelva a iniciar sesión. Solo cuando el usuario necesite resolver una excepción MsalUiRequiredException, la siguiente solicitud pasará al agente. MsalUiRequiredException se puede iniciar 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 ha revocado su consentimiento para que la aplicación esté asociada a su cuenta.

Varios agentes: si hay varios agentes instalados en un dispositivo, el agente que se instaló primero siempre será el agente activo. Solo un agente puede estar activo en un dispositivo.

Cuando se desinstala un agente

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

Si el Portal de empresa de Intune está instalado y funcionando como agente activo, y Microsoft Authenticator también está instalado, al desinstalar el Portal de empresa de Intune (agente activo), el usuario deberá volver a iniciar sesión. Cuando vuelva a iniciar sesión, la aplicación Microsoft Authenticator se convierte en el agente activo.

Integración con un agente

Generación de un URI de redirección para un agente

Sugerencia

Los pasos de este artículo pueden variar ligeramente en función del portal desde donde comienza.

Debe registrar un URI de redirección que sea compatible con el agente. El URI de redirección del agente debe incluir el nombre del paquete de la aplicación, así como la representación codificada en Base64 de la firma de la aplicación.

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

Puede utilizar keytool para generar un hash de firma codificado en Base64 usando las claves de firma de su aplicación y después generar su URI de redirección usando 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 el valor keytool, use Azure Portal para generar el URI de redirección:

  1. Inicie sesión en el Centro de administración de Microsoft Entra como 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 aIdentidad>Aplicaciones>Registros de aplicaciones.
  4. Seleccione su aplicación y, a continuaciónAutenticación>Agregar una plataforma>Android.
  5. En el panel para Configurar la aplicación para Android que se abrirá, 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 para usted 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, consulte Firmar la aplicación en la guía de 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 enlazado al agente
  • Administrador de cuentas de Android

MSAL usa primero el servicio enlazado al agente porque la llamada a este servicio no requiere ningún permiso de Android. Si se produce un error al enlazar con el servicio enlazado, MSAL usa la API de administrador de cuentas de Android. MSAL solo lo hace si la aplicación ya tiene concedido el permiso "READ_CONTACTS".

Si obtiene una excepción MsalClientException con el 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 permiso "READ_CONTACTS".

Comprobación de la integración del agente

Es posible que no quede claro inmediatamente que la integración del agente funcione, pero puede seguir estos los pasos siguientes para comprobarlo:

  1. En el dispositivo Android, complete una solicitud con el agente.
  2. En la configuración del dispositivo Android, busque una cuenta recién creada que se corresponda con la cuenta con la que se autenticó. La cuenta debe ser del tipo Cuenta profesional.

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

Inicio de sesión único a través del explorador del sistema

Las aplicaciones Android tienen la opción de usar las pestañas personalizadas de WEBVIEW, explorador del sistema o Chrome para la experiencia del usuario de autenticación. Si la aplicación no usa la autenticación con agente, tiene que usar el explorador del sistema en lugar de la vista web nativa para lograr el inicio de sesión único (SSO).

Agentes de autorización

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

MSAL admite la autorización mediante WEBVIEW o el explorador del sistema. En la imagen siguiente se muestra cómo se utiliza WEBVIEW o el explorador del sistema con CustomTabs o sin CustomTabs:

MSAL login examples

Implicaciones del inicio de sesión único

Si la aplicación usa una estrategia WEBVIEW sin integrar con autenticación asincrónica en su aplicación, los usuarios no tendrán una experiencia de inicio de sesión único en el dispositivo o entre aplicaciones nativas y aplicaciones web.

Las aplicaciones se pueden integrar con MSAL para usar el BROWSER para autorizar. A diferencia de WEBVIEW, BROWSER compartir un archivo jar de cookies con el explorador del sistema predeterminado, lo que permite menos inicios de sesión con web u otras aplicaciones nativas que se han integrado con pestañas personalizadas.

Si la aplicación usa MSAL con un agente como Microsoft Authenticator o el Portal de empresa de Intune, los usuarios pueden tener una 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 inicio de sesión único (SSO) para todas las aplicaciones que consumen la biblioteca MSAL y participan en la autenticación asincrónica. El estado de SSO del agente no se extiende a otras aplicaciones que no usan MSAL.

WebView

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

"authorization_user_agent" : "WEBVIEW"

Al utilizar WEBVIEW de la aplicación, 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. En consecuencia, el usuario no puede tener una experiencia de inicio de sesión único entre aplicaciones a menos que las aplicaciones se integren con Authenticator o el Portal de empresa.

Sin embargo, WEBVIEW proporciona la funcionalidad para personalizar la apariencia de la interfaz de usuario de inicio de sesión. Para más información sobre cómo realizar esta personalización, consulte Android WebViews (WebViews en Android).

Browser

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 una experiencia de inicio de sesión único mediante el explorador del dispositivo. MSAL usa un archivo jar de cookies compartido, que permite que otras aplicaciones nativas o aplicaciones web ejecuten el inicio de sesión único en el dispositivo mediante la cookie de sesión persistente establecida por MSAL.

Heurística de selección de explorador

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

MSAL recupera en primer lugar el explorador predeterminado del administrador de paquetes y comprueba si está en una lista probada de exploradores seguros. Si no es así, MSAL vuelve a usar la vista web en lugar de iniciar otro explorador no predeterminado desde la lista segura. Se elegirá el explorador predeterminado, independientemente de si admite pestañas personalizadas. Si el explorador admite pestañas personalizadas, MSAL inicia la pestaña personalizada. Custom Tabs tiene una apariencia similar a la de una aplicación WebView y permite una personalización de la interfaz de usuario básica. Consulte Custom Tabs in Android (Custom Tabs en Android) para 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 con el fin de garantizar una experiencia de SSO.

Exploradores probados

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

Dispositivo Explorador integrado Chrome Opera Microsoft Edge Explorador UC Firefox
Nexus 4 (API 17) superada superada no aplicable no aplicable no aplicable no aplicable
Samsung S7 (API 25) superada1 superada superada superada no superada pass
Vivo (API 26) superada superada superada superada superada no superada
Pixel 2 (API 26) superada superada superada superada no superada superada
Oppo pass no aplicable2 no aplicable no aplicable no aplicable no aplicable
OnePlus (API 25) superada superada superada superada no superada superada
Nexus (API 28) superada superada superada superada no superada superada
MI superada superada superada superada no superada superada

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

Pasos siguientes

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