Поделиться через


Руководство. Поддержка резервного веб-резерва в пакете SDK JavaScript для собственной проверки подлинности

Применяется: зеленый круг с символом белой галочки, указывающим, что следующее содержимое применяется к внешним клиентам. Внешние клиенты (дополнительные сведения)

В этом руководстве показано, как получить маркеры безопасности с помощью проверки подлинности на основе браузера, где собственная проверка подлинности не достаточно для завершения потока проверки подлинности с помощью механизма, называемого веб-резервным резервом.

Веб-резервный вариант позволяет клиентскому приложению, использующим собственную проверку подлинности, использовать делегированную браузером проверку подлинности в качестве резервного механизма для повышения устойчивости. Этот сценарий происходит, если встроенная аутентификация недостаточна, чтобы завершить процесс аутентификации. Например, если серверу авторизации требуются возможности, которые клиент не может предоставить. Дополнительные сведения о веб-резервном сервере.

Изучив это руководство, вы:

  • Проверьте 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() метода.