Azure AD B2C配置v2令牌后仍下发v1令牌的问题咨询
问题排查方向与根本原因说明
- 最常见根本原因:令牌版本由被访问资源(API)对应的应用注册配置决定,而非客户端应用的配置
你当前修改的是SPA客户端应用的accessTokenAcceptedVersion参数,该参数仅控制客户端自身作为资源被访问时返回的令牌版本。如果你是请求自定义业务API的访问令牌,需要到对应API的应用注册清单中,将accessTokenAcceptedVersion设置为2,该配置才会生效。 - 权威地址配置错误(当前配置不符合Azure AD B2C要求)
你当前使用的authority地址https://login.microsoftonline.com/XXX.onmicrosoft.com是普通Azure AD的地址,并非B2C的标准地址。B2C的权威地址必须携带用户流/自定义策略,格式为:https://<租户名>.b2clogin.com/<租户名>.onmicrosoft.com/<用户流ID/自定义策略ID>。使用普通AAD地址请求会返回标准AAD的v1令牌,你当前令牌的iss字段为https://sts.windows.net/xxx也验证了这一点,正常B2C颁发的令牌签发者地址会包含b2clogin.com。 - 请求的Scope指向了微软Graph API
你当前返回的令牌aud字段为00000003-XXXX-XXXX-XXXX-XXXXXXXXXXXX,该ID是微软Graph API的固定应用ID,Graph API默认返回v1版本令牌,属于正常现象,不受自定义配置控制。如果你需要获取自定义业务API的v2令牌,需要检查protectedResourceMap中配置的scope是否为你自己的API暴露的权限,正确格式应为api://<API应用注册的客户端ID>/<权限名>,不要误用Graph的权限。 - 本地缓存遗留旧令牌
MSAL会将获取到的令牌存储在你配置的sessionStorage中,如果之前你配置错误时已经请求过v1令牌,在缓存过期前MSAL会直接复用旧令牌。你可以清空浏览器会话存储、Cookie后重新登录,验证是否还会返回v1令牌。 - 应用注册配置未生效
应用清单修改后存在1-2分钟的生效延迟,如果刚修改完配置立刻测试可能会不生效。同时确认你修改的是正确租户下对应资源的应用注册,避免混淆测试环境和生产环境的应用配置。
内容的提问来源于stack exchange,提问作者Windowlicker
相关产品推荐
相关产品推荐

