Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется:
Внешние клиенты (дополнительные сведения)
В этом руководстве показано, как получить маркеры безопасности с помощью проверки подлинности на основе браузера, где собственная проверка подлинности не достаточно для завершения потока проверки подлинности с помощью механизма, называемого веб-резервным резервом.
Веб-резервный вариант позволяет клиентскому приложению, использующим собственную проверку подлинности, использовать делегированную браузером проверку подлинности в качестве резервного механизма для повышения устойчивости. Этот сценарий происходит, если встроенная аутентификация недостаточна, чтобы завершить процесс аутентификации. Например, если серверу авторизации требуются возможности, которые клиент не может предоставить. Дополнительные сведения о веб-резервном сервере.
Изучив это руководство, вы:
- Проверьте
isRedirectRequiredошибку. - Обработка
isRedirectRequiredошибки.
Предпосылки
Проверка и обработка резервного веб-резервирования
Одна из ошибок, с которыми можно столкнуться при использовании пакета SDK signIn() для JavaScript или SignUp() метода result.error?.isRedirectRequired(). Метод isRedirectRequired() служебной программы проверяет необходимость вернуться к делегированной браузером проверке подлинности. Используйте следующий фрагмент кода для поддержки резервного веб-размещения:
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}`);
}
}
Когда приложение использует резервный механизм, приложение получает маркеры безопасности с помощью loginPopup() метода.
Связанный контент
- Дополнительные сведения о веб-резервном сервере.
- Дополнительные сведения о типах вызовов собственной проверки подлинности.