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 adquirir tokens de segurança por meio de uma autenticação via navegador, onde a autenticação nativa não é suficiente para completar o fluxo de autenticação usando um mecanismo denominado fallback da web.
O fallback da Web permite que um aplicativo cliente que usa autenticação nativa utilize a autenticação delegada via navegador como um mecanismo de fallback para melhorar a resiliência do sistema. Esse cenário ocorre quando a autenticação nativa não é suficiente para concluir o fluxo de autenticação. Por exemplo, se o servidor de autorização exigir recursos que o cliente não pode fornecer. Saiba mais sobre fallback na Web.
Neste tutorial, você:
- Verifique o
isRedirectRequirederro. - Gerenciar erro
isRedirectRequired.
Pré-requisitos
Verificar e manipular o fallback da Web
Um dos erros que você pode encontrar ao usar o signIn() ou o método SignUp() do SDK do JavaScript é result.error?.isRedirectRequired(). O método isRedirectRequired() utilitário verifica a necessidade de voltar à autenticação delegada pelo navegador. Use o seguinte snippet de código para dar suporte ao fallback da Web:
const result = await authClient.signIn({
username,
});
if (result.isFailed()) {
if (result.error?.isRedirectRequired()) {
// Fallback to the delegated authentication flow.
const popUpRequest: PopupRequest = {
authority: customAuthConfig.auth.authority,
scopes: [],
redirectUri: customAuthConfig.auth.redirectUri || "",
prompt: "login", // Forces the user to enter their credentials on that request, negating single-sign on.
};
try {
await authClient.loginPopup(popUpRequest);
const accountResult = authClient.getCurrentAccount();
if (accountResult.isFailed()) {
setError(
accountResult.error?.errorData?.errorDescription ??
"An error occurred while getting the account from cache"
);
}
if (accountResult.isCompleted()) {
result.state = new SignInCompletedState();
result.data = accountResult.data;
}
} catch (error) {
if (error instanceof Error) {
setError(error.message);
} else {
setError("An unexpected error occurred while logging in with popup");
}
}
} else {
setError(`An error occurred: ${result.error?.errorData?.errorDescription}`);
}
}
Quando o aplicativo usa o mecanismo de fallback, o aplicativo adquire tokens de segurança usando o loginPopup() método.
Conteúdo relacionado
- Saiba mais sobre fallback na Web.
- Saiba mais sobre os tipos de desafio de autenticação nativa.