Azure AD B2C登录Microsoft身份提供商报错:跨域授权码兑换需PKCE
解决Azure AD B2C登录错误AADB2C90273的方案
一、确认应用注册配置
- 检查重定向URI类型:确保添加的是**单页应用(SPA)**类型的重定向URI,而非Web类型。SPA应用下Azure AD B2C会强制要求PKCE,误用Web类型会触发该错误。
- 调整隐式授权设置:SPA应用无需启用隐式流(ID令牌/访问令牌),授权码流+PKCE是合规方案,隐式流可能干扰PKCE正常触发。
二、确保请求端正确实现PKCE
- 生成合规的
code_verifier和code_challenge:code_verifier为43-128位随机字符串,仅允许包含字母、数字、-、.、_、~字符。- 对
code_verifier做SHA-256哈希后,进行Base64URL编码得到code_challenge,授权请求中需指定code_challenge_method=S256。
- 授权请求必须携带PKCE参数:跳转至Azure AD B2C授权端点的URL中,必须包含
code_challenge和code_challenge_method,否则B2C会判定PKCE未实现,拒绝跨域兑换授权码。 - 兑换授权码时传入
code_verifier:调用token端点获取令牌时,需将code_verifier作为参数传入,与授权请求的code_challenge完成匹配验证。
三、检查身份提供商与策略配置
- 验证Microsoft身份提供商设置:在Azure AD B2C的身份提供商配置中,确认用于集成的Microsoft账户应用注册已正确配置重定向URI,且该应用认证设置允许授权码流。
- 检查B2C用户流/自定义策略:若使用自定义策略,需确保
<UserJourney>和<TechnicalProfile>中包含PKCE相关验证逻辑,启用PKCE支持。
四、排查常见误区
- 避免混用应用类型:不要将SPA应用配置为Web应用,SPA不支持客户端密码,必须依赖PKCE。
- 清除浏览器缓存:旧会话数据可能导致请求参数异常,清除缓存和Cookie后重新测试。
内容的提问来源于stack exchange,提问作者Chirag Kothiya
相关产品推荐
相关产品推荐

