You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase集成Microsoft登录遇AADSTS9002325错误求助

问题描述

开发TypeScript React单页应用(SPA)时,使用Firebase Authentication集成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.

登录实现代码如下:

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流程相关,默认认为Firebase会自动处理。已检查Azure AD应用注册的重定向URI、授权域名、隐式流设置、帐户类型、应用密钥等配置均正确,且使用最新Firebase SDK。希望保持SPA架构,不想将Azure平台配置改为Web,也不想修改认证逻辑,求错误原因及解决方案。

更新1:发现Auth0类似问题的解决方案是将Azure平台改为Web,但此方案不符合预期认知。


原因分析与解决方法

核心原因

AADSTS9002325错误的本质是:Azure AD要求跨域场景下的授权码兑换必须使用PKCE流程,但当前Azure应用注册的平台配置与Firebase的认证流程不匹配。Firebase的signInWithPopup对接Microsoft OAuth时,实际采用授权码流(带PKCE),而非SPA平台默认的隐式流。Azure AD针对不同平台类型的流程校验逻辑不同,SPA平台默认期望使用隐式流,因此触发了PKCE要求未被正确识别的错误。

可行解决方案

1. 调整Azure AD应用注册平台类型(推荐)

将Azure应用注册中的平台从"SPA"改为"Web",并添加Firebase的重定向URI(格式通常为https://<你的Firebase项目ID>.firebaseapp.com/__/auth/handler)。此操作不会改变你的React SPA架构,只是让Azure AD适配Firebase使用的授权码+PKCE流程,符合Azure对Web应用的流程校验规则。

2. 强制Firebase使用隐式流(不推荐)

通过修改OAuthProvider配置,强制启用隐式流,让Azure AD使用SPA平台预期的认证流程:

const provider = new OAuthProvider('microsoft.com');
// 强制指定响应类型为隐式流格式
provider.setCustomParameters({
  response_type: 'id_token token'
});

注意:隐式流相比授权码+PKCE流程安全性较低,存在令牌泄露风险,不建议在生产环境使用。

3. 校验Firebase OAuth配置一致性

确认Firebase控制台中Microsoft OAuth提供商的配置:

  • 已填入正确的Azure AD客户端ID和客户端密钥
  • 重定向URI与Azure应用注册中的配置完全一致(包括协议、域名、路径)

内容的提问来源于stack exchange,提问作者Sebin Benjamin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:42:50