Compartilhar via


Tutorial: Dar suporte ao fallback da Web no SDK JavaScript para autenticação nativa

Aplica-se a: Círculo verde com um símbolo de marca de seleção branca que indica que o conteúdo a seguir se aplica a locatários externos. 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 isRedirectRequired erro.
  • 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.