Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Externí tenanti (další informace)
Tento kurz ukazuje, jak získat tokeny zabezpečení prostřednictvím ověřování založeného na prohlížeči, kde nativní ověřování nestačí k dokončení toku ověřování pomocí mechanismu označovaného jako záložní web.
Webová záložní aplikace umožňuje klientské aplikaci, která používá nativní ověřování, používat ověřování delegované prohlížečem jako záložní mechanismus ke zlepšení odolnosti. K tomuto scénáři dochází v případě, že k dokončení toku ověřování nestačí nativní ověřování. Pokud například autorizační server vyžaduje možnosti, které klient nemůže poskytnout. Přečtěte si další informace o náhradním webu.
V tomto kurzu se naučíte:
- Zkontrolujte
isRedirectRequiredchybu. - Zpracování
isRedirectRequiredchyby
Požadavky
Kontrola a zpracování náhradního webu
K jedné z chyb, ke kterým můžete dojít při použití javascriptové signIn() sady SDK nebo SignUp() metody, je result.error?.isRedirectRequired(). Metoda nástroje isRedirectRequired() kontroluje potřebu vrátit se k delegovanému ověřování v prohlížeči. K podpoře webového náhradního kódu použijte následující fragment kódu:
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}`);
}
}
Když aplikace používá záložní mechanismus, aplikace získá tokeny zabezpečení pomocí loginPopup() metody.
Související obsah
- Přečtěte si další informace o náhradním webu.
- Přečtěte si další informace o typech nativních ověřovacích výzev.