Share via


Configurar opções de autenticação numa aplicação Android com o Azure AD B2C

Este artigo descreve como pode ativar, personalizar e melhorar a experiência de autenticação do Azure Active Directory B2C (Azure AD B2C) para a sua aplicação Android.

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

Utilizar um domínio personalizado

Ao utilizar um domínio personalizado, pode marcar totalmente o URL de autenticação. Do ponto de vista do utilizador, os utilizadores permanecem no 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, também pode substituir o nome do inquilino B2C, contoso.onmicrosoft.com, no URL do pedido de autenticação pelo GUID do ID do inquilino. Por exemplo, pode mudar https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/ para https://account.contosobank.co.uk/<tenant ID GUID>/.

Para utilizar um domínio personalizado e o seu ID de inquilino no URL de autenticação, siga as orientações em Ativar domínios personalizados. Procure a Biblioteca de Autenticação da Microsoft (objeto de configuração MSAL e, em seguida, atualize as autoridades com o seu nome de domínio personalizado e ID de inquilino.

O seguinte código Kotlin 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 seguinte código Kotlin 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)

Pré-preencher o nome de início de sessão

Durante um percurso de início de sessão do utilizador, a sua aplicação poderá visar um utilizador específico. Quando uma aplicação destina um utilizador, pode especificar no pedido de autorização o login_hint parâmetro de consulta com o nome de início de sessão do utilizador. Azure AD B2C preenche automaticamente o nome de início de sessão e o utilizador tem de fornecer apenas a palavra-passe.

Para pré-preencher o nome de início de sessão, faça o seguinte:

  1. Se estiver a utilizar uma política personalizada, adicione a afirmação de entrada necessária, conforme descrito em Configurar o início de sessão direto.
  2. Procure o objeto de configuração MSAL e, em seguida, adicione o withLoginHint() método com a sugestão de início de sessão.
val parameters = AcquireTokenParameters.Builder()
    .startAuthorizationFromActivity(activity)
    .withLoginHint("bob@contoso.com") 
    // More settings here
    .build()

b2cApp!!.acquireToken(parameters)

Pré-selecionar um fornecedor de identidade

Se tiver configurado o percurso de início de sessão para que a sua aplicação inclua contas de redes sociais, como o Facebook, o LinkedIn ou o Google, pode especificar o domain_hint parâmetro . Este parâmetro de consulta fornece uma sugestão para Azure AD B2C sobre o fornecedor de identidade social que deve ser utilizado para iniciar sessão. Por exemplo, se a aplicação especificar domain_hint=facebook.com, o fluxo de início de sessão vai diretamente para a página de início de sessão do Facebook.

Para redirecionar os utilizadores para um fornecedor de identidade externo, faça o seguinte:

  1. Verifique o nome de domínio do seu fornecedor de identidade externa. Para obter mais informações, veja Redirecionar o início de sessão para um fornecedor de redes sociais.
  2. Crie ou utilize um objeto de lista existente para armazenar parâmetros de consulta adicionais.
  3. Adicione o domain_hint parâmetro com o nome de domínio correspondente à lista (por exemplo, facebook.com).
  4. Transmita a lista de parâmetros de consulta extra para o método do objeto de withAuthorizationQueryStringParameters configuração 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)

Especificar o idioma da IU

A personalização de idiomas no Azure AD B2C permite ao seu fluxo de utilizador acomodar uma variedade de idiomas de acordo com as necessidades dos seus clientes. Para obter mais informações, veja Personalização de idiomas.

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

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

Transmitir um parâmetro de cadeia de consulta personalizado

Com as políticas personalizadas, pode transmitir um parâmetro de cadeia de consulta personalizado. Um bom exemplo de caso de utilização é quando pretende alterar dinamicamente o conteúdo da página.

Para transmitir um parâmetro de cadeia de consulta personalizado, faça o seguinte:

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

Transmitir uma sugestão de token de ID

Uma aplicação de entidade confiadora pode enviar um JSON Web Token (JWT) de entrada como parte do pedido de autorização OAuth2. O token de entrada é uma sugestão sobre o utilizador ou o pedido de autorização. Azure AD B2C valida o token e, em seguida, extrai a afirmação.

Para incluir uma sugestão de token de ID no pedido de autenticação, faça o seguinte:

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

Experiência de vista Web incorporada

Os browsers são necessários para a autenticação interativa. Por predefinição, a biblioteca MSAL utiliza a vista Web do sistema. Durante o início de sessão, a biblioteca MSAL apresenta a vista Web do sistema Android com a interface de utilizador Azure AD B2C.

Para obter mais informações, veja o artigo Ativar o SSO entre aplicações no Android com o MSAL .

Consoante os seus requisitos, pode utilizar a vista Web incorporada. Existem diferenças visuais e de comportamento de início de sessão único entre a vista Web incorporada e a vista Web do sistema no MSAL.

Captura de ecrã a demonstrar a diferença entre a experiência de vista Web do sistema e a experiência de vista Web incorporada.

Importante

Recomendamos que utilize a predefinição da plataforma, que normalmente é o browser do sistema. O browser do sistema é melhor se lembrar dos utilizadores que iniciaram sessão anteriormente. Alguns fornecedores de identidade, como o Google, não suportam uma experiência de vista incorporada.

Para alterar este comportamento, abra o ficheiro app/src/main/res/raw/auth_config_b2c.json . Em seguida, adicione o authorization_user_agent atributo com o WEBVIEW valor . O exemplo seguinte demonstra como alterar o tipo de vista Web para a vista incorporada:

{
  "authorization_user_agent": "WEBVIEW" 
}

Passos seguintes