Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
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
isRedirectRequiredel error. - Controle el
isRedirectRequirederror.
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 .
Contenido relacionado
- Obtenga más información sobre la reserva web.
- Obtenga más información sobre los tipos de desafíos de autenticación nativa.