Azure AD认证流报错AADSTS9002326:跨域令牌兑换仅允许SPA客户端
问题分析与解决方案
错误原因
AADSTS9002326错误的核心是:请求携带了Origin请求头,但当前Azure AD应用注册的类型不允许跨域获取令牌。只有标记为「单页应用(SPA)」的应用才被允许跨域兑换令牌,而你的应用配置或请求环境不符合这个要求。Postman请求正常是因为它默认不会自动添加Origin头,避开了跨域校验。
解决方案
1. 排查Origin头的来源
- 如果是浏览器/前端框架发起请求:浏览器会自动添加Origin头,这种场景绝对不能用客户端凭据流(会泄露
client_secret),也不能用带client_secret的授权码流。 - 如果是后端服务/脚本发起请求:检查是否手动添加了Origin头,或是代理/网关自动注入了这个头,直接移除即可。
2. 修正Azure AD应用注册配置
登录Azure门户,找到你的应用注册,进入「身份验证」页面:
- 若是后端服务/桌面应用:
- 删除所有SPA类型的平台配置(如果存在),仅保留「Web」平台。
- 为授权码流添加正确的重定向URL(后端服务的回调地址)。
- 若是前端SPA应用:
- 确保平台配置为「单页应用(SPA)」,并添加正确的重定向URL(比如前端应用的本地地址
http://localhost:3000)。 - 使用授权码流+PKCE的方式获取令牌,不要携带
client_secret(SPA无法安全存储密钥)。
- 确保平台配置为「单页应用(SPA)」,并添加正确的重定向URL(比如前端应用的本地地址
3. 匹配应用类型调整请求方式
- 客户端凭据流仅适用于后端服务/守护程序,必须在服务器端发起请求,禁止在前端环境调用。
- 前端SPA应用必须使用PKCE版授权码流或隐式流,且应用需配置为SPA类型。
内容的提问来源于stack exchange,提问作者Tiny Wang
相关产品推荐
相关产品推荐

