Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
Locatários externos (saiba mais)
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ê:
- Verificar
isBrowserRequired() - Tratar
isBrowserRequired()
Pré-requisitos
- Conclua as etapas descritas em Conectar usuários em um exemplo de aplicativo móvel Android nativo. Este artigo mostra como executar um aplicativo Android de exemplo que você configura usando as configurações do seu ambiente.
- 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.jsontem 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(parameters)do SDK. Você obtém umSignUpErrorque passa na verificaçãoisBrowserRequired(), pois o Microsoft Entra espera um tipo de verificação de 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 parameters = NativeAuthSignUpParameters(username = email) val actionResult: SignUpResult = authClient.signUp(parameters) 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.
Tratar 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 aplicativo de exemplo.
Use o seguinte trecho de código para adquirir um token usando o método
acquireToken():val parameters = NativeAuthSignUpParameters(username = email) val actionResult: SignUpResult = authClient.signUp(parameters) 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 de API da autenticação nativa com a senha de uso único por email.
- Saiba mais sobre os tipos de desafio.