Partilhar via


Tutorial: Suporte a fallback da Web em autenticação nativa JavaScript SDK

Aplica-se a: círculo verde com um símbolo de marca de seleção branco que indica que o conteúdo a seguir se aplica a locatários externos. Inquilinos externos (saiba mais)

Este tutorial demonstra como adquirir tokens de segurança por meio de uma autenticação baseada em navegador em que a autenticação nativa não é suficiente para concluir o fluxo de autenticação usando um mecanismo chamado fallback da Web.

O fallback da Web permite que um aplicativo cliente que usa autenticação nativa use a autenticação delegada pelo navegador como um mecanismo de fallback para melhorar a resiliência. Esse cenário acontece 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 o fallback da Web.

Neste tutorial, você:

  • Erro de verificação isRedirectRequired .
  • Manipular isRedirectRequired erro.

Pré-requisitos

Verificar e manipular o fallback da Web

Um dos erros que você pode encontrar ao usar o método ou SDK do signIn()SignUp() JavaScript é result.error?.isRedirectRequired()o . O método isRedirectRequired() utilitário verifica a necessidade de recorrer à autenticação delegada pelo navegador. Use o seguinte trecho de código para oferecer 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.