Aracılığıyla paylaş


Öğretici: Yerel kimlik doğrulaması JavaScript SDK'sında web geri dönüşünü destekleme

Şunun için geçerlidir: Aşağıdaki içeriğin dış kiracılar için geçerli olduğunu gösteren beyaz onay işareti simgesine sahip yeşil daire. Dış kiracılar (daha fazla bilgi edinin)

Bu öğreticide, yerel kimlik doğrulamasının web geri dönüş adlı bir mekanizma kullanarak kimlik doğrulama akışını tamamlamak için yeterli olmadığı tarayıcı tabanlı bir kimlik doğrulaması aracılığıyla güvenlik belirteçlerinin nasıl alınacağı gösterilmektedir.

Web geri dönüşü, yerel kimlik doğrulaması kullanan bir istemci uygulamasının dayanıklılığı artırmak için tarayıcı tarafından temsilcili kimlik doğrulamasını geri dönüş mekanizması olarak kullanmasına olanak tanır. Bu senaryo, yerel kimlik doğrulaması kimlik doğrulama akışını tamamlamak için yeterli olmadığında gerçekleşir. Örneğin, yetkilendirme sunucusu istemcinin sağlayabildiği özellikler gerektiriyorsa. Web geri dönüşü hakkında daha fazla bilgi edinin.

Bu eğitimde, siz:

  • Hatayı kontrol edin isRedirectRequired.
  • isRedirectRequired hatasını gider.

Önkoşullar

Web geri dönüşünü denetleme ve işleme

JavaScript SDK'sının signIn() veya SignUp() yöntemini kullanırken karşılaşabileceğiniz hatalardan biri şudur: result.error?.isRedirectRequired(). Yardımcı program yöntemi isRedirectRequired(), tarayıcı tarafından devredilen kimlik doğrulamasına geri dönme gereksinimini denetler. Web geri dönüşünü desteklemek için aşağıdaki kod parçacığını kullanın:

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

Uygulama geri dönüş mekanizmasını kullandığında, loginPopup() yöntemini kullanarak güvenlik belirteçleri alır.