Tutorial: Suporte web fallback
Aplica-se a: iOS (Swift) macOS (Swift)
Este tutorial demonstra como adquirir um token por meio de um navegador onde a autenticação nativa não é suficiente para concluir o fluxo do usuário.
Neste tutorial, irá aprender a:
- Verifique o erro BrowserRequired.
- Manipular erro BrowserRequired.
Pré-requisitos
- Se estiver a utilizar iOS, siga os passos indicados em Iniciar sessão de utilizadores numa aplicação móvel iOS nativa de exemplo.
- Se estiver a utilizar o macOS, siga os passos indicados em Iniciar sessão de utilizadores na aplicação macOS (Swift) de exemplo utilizando a autenticação nativa.
Navegador necessário
BrowserRequired
é um mecanismo de fallback para vários cenários em que a autenticação nativa não é suficiente para concluir o fluxo do usuário.
Para garantir a estabilidade do seu aplicativo e evitar a interrupção do fluxo de autenticação, é altamente recomendável usar o método do SDK acquireToken()
para continuar o fluxo no navegador.
Quando inicializamos o SDK, precisamos especificar quais tipos de desafio nosso aplicativo pode suportar. Aqui está a lista de tipos de desafio que o SDK aceita:
- OOB (fora de banda): adicione este tipo de desafio quando seu aplicativo iOS/macOS puder lidar com uma senha única, neste caso um código de e-mail.
- Senha: adicione este tipo de desafio quando seu aplicativo for capaz de lidar com a autenticação baseada em senha.
Quando o Microsoft Entra requer recursos que o cliente não pode fornecer, o BrowserRequired
erro será retornado. Por exemplo, suponha que inicializamos a instância do SDK especificando apenas o tipo de desafio OOB, mas no centro de administração do Microsoft Entra, o aplicativo é configurado com um fluxo de usuário Email com senha . Quando chamamos o método signUp(username) da instância do SDK, recebemos um BrowserRequired
erro, porque o Microsoft Entra requer um tipo de desafio (senha, neste caso) diferente do configurado no SDK.
O tipo de desafio insuficiente é apenas um exemplo de quando BrowserRequired
pode ocorrer. BrowserRequired
é um mecanismo de fallback geral que pode acontecer em vários cenários.
Fluxo da amostra
No trecho de código a seguir, você pode ver como especificar os tipos de desafio durante a inicialização da instância do SDK:
nativeAuth = try MSALNativeAuthPublicClientApplication(
clientId: "<client id>",
tenantSubdomain: "<tenant subdomain>",
challengeTypes: [.OOB]
)
Neste caso, estamos especificando apenas o tipo de desafio OOB. Suponha que no centro de administração do Microsoft Entra, o aplicativo é configurado com um fluxo de usuário de e-mail com senha .
nativeAuth.signUp(username: email, delegate: self)
func onSignUpStartError(error: MSAL.SignUpStartError) {
if error.isBrowserRequired {
// handle browser required error
}
}
Quando chamamos o signUp(username:delegate)
método da instância do SDK, recebemos um BrowserRequired
erro, porque o Microsoft Entra requer um tipo de desafio diferente (senha, neste caso) do que o configurado no SDK.
Manipular BrowserErro obrigatório
Para lidar com esse tipo de erro, precisamos iniciar um navegador e deixar o usuário executar o fluxo de autenticação lá. Isso pode ser feito chamando acquireToken()
o método. Para usar esse método, algumas configurações adicionais precisam ser feitas:
- Configurar esquemas de URL em nosso projeto Xcode
- Configurar o URI de redirecionamento no centro de administração do Microsoft Entra
Agora podemos obter um token e uma conta interativamente. Aqui está um exemplo de como fazê-lo:
func onSignUpStartError(error: MSAL.SignUpStartError) {
if error.isBrowserRequired {
let webviewParams = MSALWebviewParameters(authPresentationViewController: self)
let parameters = MSALInteractiveTokenParameters(scopes: ["User.Read"], webviewParameters: webviewParams)
nativeAuth.acquireToken(with: parameters) { (result: MSALResult?, error: Error?) in
// result will contain account and tokens retrieved in the browser
}
}
}
Os tokens e a conta que são retornados são idênticos aos que seriam recuperados por meio de um fluxo de autenticação nativo.
Conteúdos relacionados
- Como executar o aplicativo de exemplo Android.
- Visão geral da referência da API de autenticação nativa