azure 使用Microsoft进行Firebase身份验证,错误“跨域授权码兑换需要换码验证密钥”

bweufnob  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(154)

我正在开发一个TypeScript React应用程序,我正在使用Firebase身份验证进行用户登录。我已将Microsoft设置为OAuth提供商,但在登录过程中遇到问题。

Sorry, but we’re having trouble signing you in.
AADSTS9002325: Proof Key for Code Exchange is required for cross-origin authorization code redemption.

字符串
x1c 0d1x的数据

const handleMicrosoftLogin = (
  e: React.MouseEvent<HTMLButtonElement>,
): void => {
  e.preventDefault();
  const provider = new OAuthProvider('microsoft.com');
  signInWithPopup(auth, provider)
    .then((result: UserCredential | null) => {
      if (result != null) {
        // Get the OAuth access token and ID Token
        const credential = OAuthProvider.credentialFromResult(result);
        if (credential != null) {
          const accessToken = credential.accessToken;
          const idToken = credential.idToken;
          console.log(accessToken, idToken);
        }
      }
    })
    .catch((error: FirebaseError) => {
      // handle errors here
      console.log(error);
    });
};


我知道这个错误与OAuth 2.0中的PKCE(Proof Key for Code Exchange)流程有关,但我的理解是Firebase应该为我处理这个问题。
我已检查我的Azure Active Directory应用程序注册,配置似乎正确:

  • 重定向URI设置为https://. firebaseapp.com/__/auth/handler。授权域也添加到Firebase身份验证设置中。
  • “访问令牌”和“ID令牌”都在“隐式授权和混合流”下启用
  • 在“支持的帐户类型”下选择了正确的帐户类型(任何组织目录中的帐户)。
  • 应用程序ID和应用程序密码已添加到Firebase身份验证登录方法的提供程序设置中。

我正在使用最新版本的Firebase SDK。我想保持我的应用程序作为一个 SPA,不想改变我的平台配置从SPA到Web(除非我误解了文档)。我还希望避免添加辅助函数和修改我发送用户进行身份验证的URL。
有什么想法可能会导致这个错误,以及如何解决它?如有任何帮助,我们将不胜感激。
我已经检查了以下相关问题,但似乎没有一个问题提供了适当的解决方案或解释的问题:

* 更新1*

我发现了一个类似的问题,对于Auth 0(https://community.auth0.com/t/proof-key-for-code-exchange-is-required-for-cross-origin-authorization-code-redemption/44529/12),解决方案是将平台添加为Web,而不是Azure平台配置中的单页应用程序,这对我来说没有意义。


62o28rlo

62o28rlo1#

好像是Firebase does not support PKCE。要继续下去,您必须跳过PKCE,不注册SPA回复URL,并启用隐式流,就像您已经做的那样。

相关问题