Freigeben über


Lernprogramm: Unterstützen von Web-Fallback in der nativen Authentifizierung JavaScript SDK

Gilt für: Grüner Kreis mit einem weißen Häkchensymbol, das angibt, dass der folgende Inhalt für externe Mandanten gilt. Externe Mandanten (weitere Informationen)

In diesem Lernprogramm wird veranschaulicht, wie Sicherheitstoken über eine browserbasierte Authentifizierung abgerufen werden, bei der die systemeigene Authentifizierung nicht ausreicht, um den Authentifizierungsfluss mithilfe eines Mechanismus namens Web-Fallback abzuschließen.

Web-Fallback ermöglicht einer Client-App, die systemeigene Authentifizierung verwendet, um die browserdelegierte Authentifizierung als Fallbackmechanismus zu verwenden, um die Resilienz zu verbessern. Dieses Szenario tritt auf, wenn die native Authentifizierung nicht ausreicht, um den Authentifizierungsflow abzuschließen. Wenn beispielsweise der Autorisierungsserver Funktionen benötigt, die der Client nicht bereitstellen kann. Weitere Informationen zum Web-Fallback.

In diesem Tutorial erfahren Sie:

  • Fehler überprüfen isRedirectRequired .
  • Behandeln sie isRedirectRequired Fehler.

Voraussetzungen

Überprüfen und Behandeln von Web-Fallbacks

Einer der Fehler, die auftreten können, wenn Sie das JavaScript SDK signIn() oder SignUp() die Methode verwenden, ist result.error?.isRedirectRequired(). Die Hilfsmethode isRedirectRequired() überprüft die Notwendigkeit, auf die browserdelegierte Authentifizierung zurückzugreifen. Verwenden Sie den folgenden Codeausschnitt, um Web-Fallback zu unterstützen:

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}`);
   }
}

Wenn die App den Fallbackmechanismus verwendet, erwirbt die App Mithilfe der loginPopup() Methode Sicherheitstoken.