Compartir a través de


Tutorial: Compatibilidad con la reserva web en el SDK de JavaScript de autenticación nativa

Se aplica a: Círculo verde con un símbolo de marca de verificación blanca que indica que el siguiente contenido se aplica a los inquilinos externos. Inquilinos externos (más información)

En este tutorial se muestra cómo adquirir tokens de seguridad a través de una autenticación basada en explorador en la que la autenticación nativa no es suficiente para completar el flujo de autenticación mediante un mecanismo denominado reserva web.

La reserva web permite que una aplicación cliente que use la autenticación nativa para usar la autenticación delegada por el explorador como mecanismo de reserva para mejorar la resistencia. Este escenario se produce cuando la autenticación nativa no es suficiente para completar el flujo de autenticación. Por ejemplo, si el servidor de autorización requiere funcionalidades que el cliente no puede proporcionar. Obtenga más información sobre la reserva web.

En este tutorial, usted hará lo siguiente:

  • Compruebe isRedirectRequired el error.
  • Controle el isRedirectRequired error.

Prerrequisitos

Comprobación y control de reserva web

Uno de los errores que puede encontrar al usar el SDK signIn() de JavaScript o SignUp() el método es result.error?.isRedirectRequired(). El método isRedirectRequired() de utilidad comprueba la necesidad de revertir a la autenticación delegada por el explorador. Use el siguiente fragmento de código para admitir la reserva 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}`);
   }
}

Cuando la aplicación usa el mecanismo de reserva, la aplicación adquiere tokens de seguridad mediante el loginPopup() método .