Compartilhar via


Configurar opções de autenticação em um aplicativo Android usando o Azure AD B2C

Importante

A partir de 1º de maio de 2025, o Azure AD B2C não estará mais disponível para compra para novos clientes. Saiba mais em nossas perguntas frequentes.

Este artigo descreve como você pode habilitar, personalizar e aprimorar a experiência de autenticação do Azure AD B2C (Azure Active Directory B2C) para seu aplicativo Android.

Antes de começar, familiarize-se com os seguintes artigos:

Usar um domínio personalizado

Usando um domínio personalizado, você pode marcar totalmente a URL de autenticação. Do ponto de vista do usuário, os usuários permanecem em seu domínio durante o processo de autenticação, em vez de serem redirecionados para o Azure AD B2C b2clogin.com nome de domínio.

Para remover todas as referências a “b2c” no URL, você também pode substituir o nome do locatário b2c, contoso.onmicrosoft.com, no URL de solicitação de autenticação pelo GUID da ID do locatário. Por exemplo, você pode alterar https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/ para https://account.contosobank.co.uk/<tenant ID GUID>/.

Para usar um domínio personalizado e sua ID de locatário na URL de autenticação, siga as diretrizes em Habilitar domínios personalizados. Procure sua Biblioteca de Autenticação da Microsoft (objeto de configuração MSAL e atualize as autoridades com o nome de domínio personalizado e a ID do locatário.

O código Kotlin a seguir mostra o objeto de configuração MSAL antes da alteração:

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

b2cApp!!.acquireToken(parameters)

O código Kotlin a seguir mostra o objeto de configuração MSAL após a alteração:

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)

Preencher previamente o nome de usuário

Durante uma jornada de sign-in do usuário, seu aplicativo pode focar em um usuário específico. Quando um aplicativo tem como destino um usuário, ele pode especificar na solicitação de autorização o login_hint parâmetro de consulta com o nome de entrada do usuário. O Azure AD B2C preenche automaticamente o nome de entrada e o usuário precisa fornecer apenas a senha.

Para preencher o nome de logon, faça o seguinte:

  1. Se você estiver usando uma política personalizada, adicione a declaração de entrada necessária, conforme descrito em Configurar conexão direta.
  2. Procure seu objeto de configuração MSAL e adicione o withLoginHint() método com a dica de logon.
val parameters = AcquireTokenParameters.Builder()
    .startAuthorizationFromActivity(activity)
    .withLoginHint("bob@contoso.com") 
    // More settings here
    .build()

b2cApp!!.acquireToken(parameters)

Pré-selecionar um provedor de identidade

Se você configurou o percurso de entrada do aplicativo para incluir contas sociais, como Facebook, LinkedIn ou Google, poderá especificar o domain_hint parâmetro. Esse parâmetro de consulta fornece uma dica para o Azure AD B2C sobre o provedor de identidade social que deve ser usado para entrar. Por exemplo, se o aplicativo especificar domain_hint=facebook.com, o fluxo de entrada vai diretamente para a página de entrada do Facebook.

Para redirecionar usuários para um provedor de identidade externo, faça o seguinte:

  1. Verifique o nome de domínio do provedor de identidade externo. Para obter mais informações, consulte Redirecionar o login para um provedor social.
  2. Crie ou use um objeto de lista existente para armazenar parâmetros de consulta extras.
  3. Adicione o domain_hint parâmetro com o nome de domínio correspondente à lista (por exemplo, facebook.com).
  4. Passe a lista de parâmetros de consulta extra para o método do objeto de configuração MSAL withAuthorizationQueryStringParameters .
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)

Especificar o idioma da interface do usuário

A personalização de idiomas no Azure AD B2C permite que seu fluxo de usuário acomode uma variedade de idiomas para atender às necessidades dos clientes. Para obter mais informações, consulte Personalização de idioma.

Para definir o idioma preferencial, faça o seguinte:

  1. Configurar a personalização do idioma.
  2. Crie ou use um objeto de lista existente para armazenar parâmetros de consulta extras.
  3. Adicione o ui_locales parâmetro com o código de idioma correspondente à lista (por exemplo, en-us).
  4. Passe a lista de parâmetros de consulta extra para o método do objeto de configuração MSAL withAuthorizationQueryStringParameters .
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)

Passar um parâmetro de cadeia de caracteres de consulta personalizado

Com políticas personalizadas, você pode passar um parâmetro de cadeia de caracteres de consulta personalizado. Um bom exemplo de caso de uso é quando você deseja alterar dinamicamente o conteúdo da página.

Para passar um parâmetro de cadeia de caracteres de consulta personalizada, faça o seguinte:

  1. Configure o elemento ContentDefinitionParameters .
  2. Crie ou use um objeto de lista existente para armazenar parâmetros de consulta extras.
  3. Adicione o parâmetro de cadeia de caracteres de consulta personalizada, como campaignId. Defina o valor do parâmetro (por exemplo, germany-promotion).
  4. Passe a lista de parâmetros de consulta extra para o método do objeto de configuração MSAL withAuthorizationQueryStringParameters .
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)

Passar uma dica de token de ID

Um aplicativo de terceira parte confiável pode enviar um JWT (Token Web JSON) de entrada como parte da solicitação de autorização OAuth2. O token de entrada é uma dica sobre o usuário ou a solicitação de autorização. O Azure AD B2C valida o token e, em seguida, extrai a declaração.

Para incluir uma dica de token de ID na solicitação de autenticação, faça o seguinte:

  1. Em sua política personalizada, defina um perfil técnico de dica de token de ID.
  2. Em seu código, gere ou adquira um token de ID e defina o token como uma variável (por exemplo, idToken).
  3. Crie ou use um objeto de lista existente para armazenar parâmetros de consulta extras.
  4. Adicione o id_token_hint parâmetro com a variável correspondente que armazena o token de ID.
  5. Passe a lista de parâmetros de consulta extra para o método do objeto de configuração MSAL withAuthorizationQueryStringParameters .
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)

Experiência de exibição web embutida

Navegadores da Web são necessários para autenticação interativa. Por padrão, a biblioteca MSAL usa o modo de exibição da Web do sistema. Durante a entrada, a biblioteca MSAL exibe a exibição da Web do sistema Android com a interface do usuário do Azure AD B2C.

Para obter mais informações, consulte o artigo Habilitar SSO entre aplicativos no Android usando a MSAL .

Dependendo de seus requisitos, você pode usar a visão da web embutida. Há diferenças de comportamento de logon único e visual entre a exibição da Web inserida e a exibição da Web do sistema na MSAL.

Captura de tela demonstrando a diferença entre a experiência de exibição da Web do sistema e a experiência de exibição da Web inserida.

Importante

Recomendamos que você use o padrão da plataforma, que normalmente é o navegador do sistema. O navegador do sistema é melhor em lembrar os usuários que fizeram logon antes. Alguns provedores de identidade, como o Google, não dão suporte a uma experiência de exibição inserida.

Para alterar esse comportamento, abra o arquivo app/src/main/res/raw/auth_config_b2c.json . Em seguida, adicione o authorization_user_agent atributo com o WEBVIEW valor. O exemplo a seguir demonstra como alterar o tipo de exibição da Web para o modo de exibição inserido:

{
  "authorization_user_agent": "WEBVIEW" 
}

Próximas etapas