Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:
Inquilinos externos (saiba mais)
Este tutorial demonstra como isBrowserRequired() 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() - Lidar com
isBrowserRequired()
Pré-requisitos
- Conclua as etapas em Iniciar sessão de utilizadores num exemplo de aplicação móvel Android nativa. Este artigo mostra como executar um exemplo de Android que você configura usando as configurações do locatário.
- Conclua as etapas em Tutorial: Adicionar iniciar e terminar sessão com código único enviado por e-mail.
Alternativa da Web
Utilize o mecanismo de fallback da Web para cenários em que a autenticação nativa não é suficiente para concluir o fluxo de autenticação do utilizador.
Ao inicializar o SDK do Android, especificam-se os tipos de desafio suportados pela aplicação móvel, como oob e palavra-passe.
Se o seu aplicativo cliente não puder suportar um tipo de desafio exigido pelo Microsoft Entra, a resposta do Microsoft Entra indica 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 o método de autenticação por e-mail e senha.
Nesse caso, o método utilitário isBrowserRequired() retorna true.
Fluxo da amostra
Vejamos um exemplo de fluxo 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 oob tipo de desafio, 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 o seu fluxo de usuário para usar e-mail com senha como método de autenticação.
Inicie um fluxo de inscrição usando o método
signUp(parameters)do SDK. Você recebe umSignUpErrorque passa na verificaçãoisBrowserRequired(), pois o Microsoft Entra espera palavra-passe e tipo de desafio (oob), mas você configurou seu SDK com apenas (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 de autenticação nativa e que um navegador deve ser usado.
Erro Handle isBrowserRequired()
Para lidar com esse erro, o aplicativo cliente precisa iniciar um navegador e reiniciar o fluxo de autenticação. Você pode fazer isso usando o método acquireToken() da Microsoft Authentication Library (MSAL).
Para fazer isso, use 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 ficheiro de configuração da sua aplicação cliente, utilize os passos em Configurar a aplicação 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, ou seja, token de ID, token de acesso e token de atualização, que você obtém através do fluxo de autenticação nativa são os mesmos que o token obtido por meio do fluxo delegado do navegador.
Conteúdo relacionado
- Saiba como executar o aplicativo de exemplo do iOS
- Explore referência da API de autenticação nativa com código de acesso único por e-mail.
- Saiba mais sobre tipos de desafios.