Tutorial: suporte a fallback da web no aplicativo Android
Este tutorial demonstra como isBrowserRequired()
o erro acontece e como você pode resolvê-lo. O método utilitário isBrowserRequired()
verifica a necessidade de um mecanismo de fallback para vários cenários em que a autenticação nativa não é suficiente para concluir o fluxo de autenticação de maneira funcional e segura.
Neste tutorial, você aprenderá a:
- Confira
isBrowserRequired()
- Lidar com
isBrowserRequired()
Pré-requisitos
- Conclua as etapas Conectar usuários em um aplicativo móvel Android nativo de exemplo. Este artigo mostra como executar um Android de amostra que você configura usando suas configurações de locatário.
- Conclua as etapas no Tutorial: Adicionar entrada e saída com a senha de uso único por email .
Fallback da Web
Use o mecanismo de fallback da Web para cenários em que a autenticação nativa não seja suficiente para concluir o fluxo de autenticação do usuário.
Ao inicializar o SDK do Android, especifique os tipos de desafio aos quais seu aplicativo móvel dá suporte, como oob e senha.
Se o aplicativo cliente não puder dar suporte a um tipo de desafio exigido pelo Microsoft Entra, a resposta do Microsoft Entra indicará que o aplicativo cliente precisa continuar com o fluxo de autenticação no navegador. Por exemplo, você inicializa o SDK com o tipo de desafio oob, mas no Centro de administração do Microsoft Entra você configura o aplicativo com um email com o método de autenticação de senha.
Nesse caso, o método utilitário isBrowserRequired()
retorna true.
Fluxo de exemplos
Vamos examinar um fluxo de exemplo que retorna isBrowserRequired()
e como você pode lidar com ele:
No arquivo de configuração JSON, que você passa para o SDK durante a inicialização, adicione apenas o tipo de desafio oob, conforme mostrado no seguinte trecho de código:
PublicClientApplication.createNativeAuthPublicClientApplication( requireContext(), R.raw.native_auth_config // JSON configuration file )
A configuração
native_auth_config.json
tem o seguinte trecho de código:{ "client_id" : "{Enter_the_Application_Id_Here}", "authorities" : [ { "type": "CIAM", "authority_url": "https://{Enter_the_Tenant_Subdomain_Here}.ciamlogin.com/{Enter_the_Tenant_Subdomain_Here}.onmicrosoft.com/" } ], "challenge_types" : ["oob"], "logging": { "pii_enabled": false, "log_level": "INFO", "logcat_enabled": true } }
No centro de administração do Microsoft Entra, configure seu fluxo de usuário para usar Email com senha como o método de autenticação.
Inicie um fluxo de inscrição usando o método
signUp(username)
do SDK. Você obtém umSignUpError
que passa na verificaçãoisBrowserRequired()
, pois o Microsoft Entra espera um tipo de verificação senha e oob, mas você configurou seu SDK apenas com oob.Para verificar e manipular o
isBrowserRequired()
, use o seguinte trecho de código:val actionResult = authClient.signUp( username = email ) if (actionResult is SignUpError && actionResult.isBrowserRequired()) { // Handle "browser required" error }
O código indica que o fluxo de autenticação não pode ser concluído por meio da autenticação nativa e que um navegador deve ser usado.
Lidar com o erro isBrowserRequired()
Para lidar com esse erro, o aplicativo cliente precisa iniciar um navegador e reiniciar o fluxo de autenticação. Você pode realizar isso usando o método acquireToken()
da MSAL (Biblioteca de Autenticação da Microsoft).
Para fazer isso, execute as seguintes etapas:
Para adicionar um URI de redirecionamento ao aplicativo que você registrou anteriormente, use as etapas em Adicionar uma URL de redirecionamento de plataforma.
Para atualizar o arquivo de configuração do aplicativo cliente, use as etapas em Configurar o URI de redirecionamento na configuração do SDK.
Use o seguinte trecho de código para adquirir um token usando o método
acquireToken()
:val actionResult = authClient.signUp( username = email ) if (actionResult is SignUpError && actionResult.isBrowserRequired()) { authClient.acquireToken( AcquireTokenParameters( AcquireTokenParameters.Builder() .startAuthorizationFromActivity(requireActivity()) .withScopes(getScopes()) .withCallback(getAuthInteractiveCallback()) ) // Result will contain account and tokens retrieved through the browser. ) }
Os tokens de segurança, que são token de ID, token de acesso e token de atualização, obtidos por meio do fluxo de autenticação nativa são iguais ao token obtido por meio do fluxo delegado pelo navegador.
Conteúdo relacionado
- Saiba como executar o aplicativo de exemplo do iOS
- Explore a Referência da API de autenticação nativa com a senha de uso único por email.
- Saiba mais sobre os tipos de desafio.