Compartir vía


Configuración de las opciones de autenticación en una aplicación de Android mediante Azure AD B2C

En este artículo se describe cómo puede habilitar, personalizar y mejorar la experiencia de autenticación de Azure Active Directory B2C (Azure AD B2C) para una aplicación Android.

Antes de comenzar, familiarícese con los siguientes artículos:

Uso de un dominio personalizado

Mediante el uso de un dominio personalizado, puede personalizar completamente la dirección URL de autenticación. Desde el punto de vista del usuario, este permanece en el dominio durante el proceso de autenticación, en lugar de que se le redirija al nombre de dominio b2clogin.com de Azure AD B2C.

También puede reemplazar el nombre del inquilino de B2C (contoso.onmicrosoft.com) en la dirección URL de la solicitud de autenticación por el GUID del identificador de inquilino para quitar todas las referencias a "b2c" en la dirección URL. Por ejemplo, puede cambiar https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/ por https://account.contosobank.co.uk/<tenant ID GUID>/.

Para usar un dominio personalizado y el identificador de inquilino en la dirección URL de autenticación, siga las instrucciones que se indican en Habilitación de dominios personalizados. Busque el objeto de configuración de la Biblioteca de autenticación de Microsoft (MSAL) y, después, actualice las autoridades con el nombre de dominio y el id. de inquilino personalizados.

El código de Kotlin siguiente muestra el objeto de configuración de MSAL antes del cambio:

val parameters = AcquireTokenParameters.Builder()
        .startAuthorizationFromActivity(activity)
        .fromAuthority("https://contoso.b2clogin.com/fabrikamb2c.contoso.com/B2C_1_susi")
        // More settings here
        .build()

b2cApp!!.acquireToken(parameters)

El código de Kotlin siguiente muestra el objeto de configuración de MSAL después del cambio:

val parameters = AcquireTokenParameters.Builder()
        .startAuthorizationFromActivity(activity)
        .fromAuthority("https://custom.domain.com/00000000-0000-0000-0000-000000000000/B2C_1_susi")
        // More settings here
        .build()

b2cApp!!.acquireToken(parameters)

Rellenar previamente el nombre de inicio de sesión

Durante el recorrido de inicio de sesión de un usuario, la aplicación podría tener como destino un usuario específico. Cuando una aplicación se dirige a un usuario, puede especificar, en la solicitud de autorización, el parámetro de consulta login_hint con el nombre de inicio de sesión de usuario. Azure AD B2C rellena automáticamente el nombre de inicio de sesión y solo es necesario que el usuario proporcione la contraseña.

Para rellenar previamente el nombre de inicio de sesión, haga lo siguiente:

  1. Si usa una directiva personalizada, agregue la notificación de entrada necesaria, como se describe en Configuración del inicio de sesión directo.
  2. Busque el objeto de configuración de MSAL y, después, agregue el método withLoginHint() con la sugerencia de inicio de sesión.
val parameters = AcquireTokenParameters.Builder()
    .startAuthorizationFromActivity(activity)
    .withLoginHint("bob@contoso.com") 
    // More settings here
    .build()

b2cApp!!.acquireToken(parameters)

Preseleccione un proveedor de identidad

Si se ha configurado el recorrido de inicio de sesión para que la aplicación incluya cuentas de redes sociales como Facebook, LinkedIn o Google, puede especificar el parámetro domain_hint. Este parámetro de consulta proporciona una sugerencia a Azure AD B2C acerca del proveedor de identidades sociales que debe usarse para iniciar sesión. Por ejemplo, si la aplicación especifica domain_hint=facebook.com, el flujo de inicio de sesión va directamente a la página de inicio de sesión de Facebook.

Para redirigir a los usuarios a un proveedor de identidades externo, haga lo siguiente:

  1. Compruebe el nombre de dominio del proveedor de identidades externo. Para más información, consulte Redirección del inicio de sesión a un proveedor social.
  2. Cree o use un objeto de lista existente para almacenar parámetros de consulta adicionales.
  3. Agregue a la lista el parámetro domain_hint con el nombre de dominio correspondiente (por ejemplo, facebook.com).
  4. Pase la lista de parámetros de consulta adicionales al método withAuthorizationQueryStringParameters del objeto de configuración de MSAL.
val extraQueryParameters: MutableList<Pair<String, String>> = ArrayList()
extraQueryParameters.add(Pair("domain_hint", "facebook.com"))

val parameters = AcquireTokenParameters.Builder()
    .startAuthorizationFromActivity(activity)
    .withAuthorizationQueryStringParameters(extraQueryParameters) 
    // More settings here
    .build()

b2cApp!!.acquireToken(parameters)

Especificación del idioma de la interfaz de usuario

La personalización del idioma en Azure AD B2C permite que el flujo de usuario albergue diversos idiomas a fin de satisfacer las necesidades de los clientes. Para obtener más información, consulte Personalización de idioma.

Para establecer el idioma preferido, haga lo siguiente:

  1. Configure la personalización de idioma.
  2. Cree o use un objeto de lista existente para almacenar parámetros de consulta adicionales.
  3. Agregue a la lista el parámetro ui_locales con el código de idioma correspondiente (por ejemplo, en-us).
  4. Pase la lista de parámetros de consulta adicionales al método withAuthorizationQueryStringParameters del objeto de configuración de MSAL.
val extraQueryParameters: MutableList<Map.Entry<String, String>> = ArrayList()

val mapEntry   = object : Map.Entry<String, String> {
      override val key: String = "ui_locales"
      override val value: String = "en-us"
    }   
    
extraQueryParameters.add(mapEntry )

val parameters = AcquireTokenParameters.Builder()
    .startAuthorizationFromActivity(activity)
    .withAuthorizationQueryStringParameters(extraQueryParameters) 
    // More settings here
    .build()

b2cApp!!.acquireToken(parameters)

Paso de un parámetro de cadena de consulta personalizado

Con las directivas personalizadas, puede pasar un parámetro de cadena de consulta personalizado. Un buen ejemplo de caso de uso es cuando se desea cambiar dinámicamente el contenido de la página.

Para pasar un parámetro de cadena de consulta personalizado, haga lo siguiente:

  1. Configure el elemento ContentDefinitionParameters.
  2. Cree o use un objeto de lista existente para almacenar parámetros de consulta adicionales.
  3. Agregue el parámetro de cadena de consulta personalizado, por ejemplo, campaignId. Establezca el valor del parámetro (por ejemplo, germany-promotion).
  4. Pase la lista de parámetros de consulta adicionales al método withAuthorizationQueryStringParameters del objeto de configuración de MSAL.
val extraQueryParameters: MutableList<Pair<String, String>> = ArrayList()
extraQueryParameters.add(Pair("campaignId", "germany-promotion"))

val parameters = AcquireTokenParameters.Builder()
    .startAuthorizationFromActivity(activity)
    .withAuthorizationQueryStringParameters(extraQueryParameters) 
    // More settings here
    .build()

b2cApp!!.acquireToken(parameters)

Paso de una sugerencia de token de identificador

Una aplicación de usuario de confianza puede enviar un token JSON Web Token (JWT) de entrada como parte de la solicitud de autorización de OAuth2. El token de entrada es una sugerencia sobre el usuario o la solicitud de autorización. Azure AD B2C valida el token y, a continuación, extrae la notificación.

Para incluir una sugerencia de token de identificador en la solicitud de autenticación, haga lo siguiente:

  1. En la directiva personalizada, defina un perfil técnico de sugerencias de token de identificador.
  2. En el código, genere o adquiera un token de identificador y, después, establezca el token en una variable (por ejemplo, idToken).
  3. Cree o use un objeto de lista existente para almacenar parámetros de consulta adicionales.
  4. Agregue el parámetro id_token_hint con la variable correspondiente que almacena el token de identificador.
  5. Pase la lista de parámetros de consulta adicionales al método withAuthorizationQueryStringParameters del objeto de configuración de MSAL.
val extraQueryParameters: MutableList<Pair<String, String>> = ArrayList()
extraQueryParameters.add(Pair("id_token_hint", idToken))

val parameters = AcquireTokenParameters.Builder()
    .startAuthorizationFromActivity(activity)
    .withAuthorizationQueryStringParameters(extraQueryParameters) 
    // More settings here
    .build()

b2cApp!!.acquireToken(parameters)

Experiencia de vista web insertada

Se requieren exploradores web para la autenticación no interactiva. De forma predeterminada, la biblioteca MSAL usa la vista web del sistema. Durante el inicio de sesión, la biblioteca MSAL muestra la vista web del sistema Android con la interfaz de usuario de Azure AD B2C.

Para obtener más información, consulte el artículo Habilitación de SSO entre aplicaciones en Android mediante MSAL.

En función de sus requisitos, puede usar la vista web insertada. Hay diferencias de comportamiento visual y de inicio de sesión único entre la vista web insertada y la vista web del sistema en MSAL.

Captura de pantalla que muestra la diferencia entre la experiencia de vista web del sistema y la experiencia de vista web insertada.

Importante

Se recomienda usar el valor predeterminado de la plataforma, que normalmente es el explorador del sistema. El explorador del sistema la mejor opción para recordar a los usuarios que han iniciado sesión antes. Algunos proveedores de identidades, como Google, no admiten una experiencia de vista insertada.

Para cambiar este comportamiento, abra el archivo app/src/main/res/raw/auth_config_b2c.json. A continuación, agregue el atributo authorization_user_agent con el valor WEBVIEW. En el ejemplo siguiente se muestra cómo cambiar el tipo de vista web a vista insertada:

{
  "authorization_user_agent": "WEBVIEW" 
}

Pasos siguientes