Configurar opções de autenticação em um aplicativo Android usando o Azure AD B2C
Este artigo descreve como habilitar, personalizar e aprimorar a experiência de autenticação do Azure AD B2C (Azure Active Directory B2C) do aplicativo Android.
Antes de começar, familiarize-se com os seguintes artigos:
- Configurar a autenticação em um aplicativo Android de exemplo usando o Azure AD B2C
- Habilitar a autenticação em seu próprio aplicativo Android usando o Azure AD B2C
Usar um domínio personalizado
Ao usar um domínio personalizado, você pode recriar por completo a URL de autenticação. Da perspectiva do usuário, os usuários permanecem nos domínios durante o processo de autenticação, em vez de serem redirecionados para o nome de domínio b2clogin.com do Azure AD B2C.
Para remover todas as referências a “b2c” na URL, você também pode substituir o nome do locatário b2c, contoso.onmicrosoft.com, na URL de solicitação de autenticação pelo GUID da ID do locatário. Por exemplo, você pode mudar de 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. Encontre o objeto de configuração da MSAL (Biblioteca de Autenticação da Microsoft) e altere authorities com seu nome de domínio personalizado e sua ID de locatário.
O seguinte código Kotlin mostra o objeto de configuração da 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 da MSAL depois da 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 um percurso de entrada do usuário, um aplicativo pode ser direcionado a um usuário específico. Ao direcionar a um usuário, um aplicativo pode especificar, na solicitação de autorização, o parâmetro de consulta login_hint
com o nome de entrada do usuário. O Azure AD B2C preenche automaticamente o nome de entrada, e o usuário só precisa fornecer a senha.
Para preencher o nome de logon, faça o seguinte:
- Se você estiver usando uma política personalizada, adicione a declaração de entrada necessária, conforme descrito em Configurar conexão direta.
- Procure seu objeto de configuração da MSAL e, em seguida, adicione o método
withLoginHint()
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 para seu aplicativo para incluir contas sociais, como Facebook, LinkedIn ou do Google, você pode 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 especifica 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:
- Verifique o nome de domínio do seu provedor de identidade externo. Para obter mais informações, consulte redirecionar entrada para um provedor social.
- Crie ou use um objeto de lista existente para armazenar parâmetros de consulta adicionais.
- Adicione o parâmetro
domain_hint
com o nome de domínio correspondente à lista (por exemplo,facebook.com
). - Passe a lista de parâmetros de consulta adicional ao método
withAuthorizationQueryStringParameters
do objeto de configuração da 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 a linguagem de programação da interface do usuário
A personalização da linguagem de programação no Azure Active Directory B2C permite que o fluxo do usuário acomode uma variedade de linguagens de programação para atender às necessidades dos clientes. Para obter mais informações, consulte Personalização de linguagem de programação.
Para definir o idioma preferencial, faça o seguinte:
- Configurar a personalização de linguagem.
- Crie ou use um objeto de lista existente para armazenar parâmetros de consulta adicionais.
- Adicione o parâmetro
ui_locales
com o código de linguagem correspondente à lista (por exemplo,en-us
). - Passe a lista de parâmetros de consulta adicional ao método
withAuthorizationQueryStringParameters
do objeto de configuração da 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)
Passar um parâmetro de cadeia de caracteres de consulta personalizado
Com as políticas personalizadas, é possível 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 personalizado, siga estas etapas:
- Configure o elemento ContentDefinitionParameters.
- Crie ou use um objeto de lista existente para armazenar parâmetros de consulta adicionais.
- Adicione o parâmetro de cadeia de caracteres de consulta personalizada, como
campaignId
. Defina o valor do parâmetro (por exemplo,germany-promotion
). - Passe a lista de parâmetros de consulta adicional ao método
withAuthorizationQueryStringParameters
do objeto de configuração da 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)
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:
- Em sua política personalizada, defina um perfil técnico de dica de token de ID.
- No código, gere ou adquira uma ID do token e, em seguida, defina o token como uma variável (por exemplo,
idToken
). - Crie ou use um objeto de lista existente para armazenar parâmetros de consulta adicionais.
- Adicione o parâmetro
id_token_hint
com a variável correspondente que armazena a ID do token. - Passe a lista de parâmetros de consulta adicional ao método
withAuthorizationQueryStringParameters
do objeto de configuração da 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 exibição da Web inserida
É obrigatório o uso de navegadores da Web na autenticação interativa. Por padrão, a biblioteca MSAL usa a exibição da Web do sistema. Durante a inserção das credenciais, a biblioteca MSAL abre o modo de exibição da Web do sistema Android com a interface do usuário do Azure AD B2C.
Para obter mais informações, confira o artigo Habilitar SSO entre aplicativos no Android usando o MSAL.
Dependendo dos seus requisitos, você pode usar a exibição da Web inserida. 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 no MSAL.
Importante
Recomendamos que você use o padrão de plataforma, que é normalmente o navegador do sistema. O navegador do sistema é melhor para 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 atributo authorization_user_agent
com o valor WEBVIEW
. O exemplo a seguir demonstra como alterar o tipo de exibição da Web para a exibição inserida:
{
"authorization_user_agent": "WEBVIEW"
}
Próximas etapas
- Para saber mais sobre a configuração do Android, confira Opções de configuração da MSAL para Android.