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

使用.NET 5调用受Azure B2C保护的Web API时访问令牌版本不匹配问题

Azure B2C访问令牌版本不匹配问题修复方案

核心错误纠正

你之前的配置修改方向完全相反:要获取2.0版本的访问令牌,需要将Web API应用清单的accessTokenAcceptedVersion参数设置为2,而非1。
注意:B2C应用清单修改存在10~15分钟的生效延迟,修改后不要立刻测试,避免误判配置是否生效,必要时可重新发布对应用户流/自定义策略强制刷新配置。

上下游配置校验

前端Web应用配置检查

  • 配置文件中AzureAdB2C节点的Authority地址必须带/v2.0后缀,格式参考:
    https://{你的B2C租户名}.b2clogin.com/{你的B2C租户名}.onmicrosoft.com/{用户流名称}/v2.0
    未加v2.0后缀时,B2C默认走1.0认证端点,返回的所有令牌都是1.0版本。
  • 申请令牌时传入的Scopes必须使用B2C API的完整权限格式,参考:
    https://{你的B2C租户名}.onmicrosoft.com/{API应用的客户端ID}/{自定义权限名}
    不要使用短格式scope、或者Graph相关的默认scope,否则B2C会返回1.0版本令牌。

你现有获取令牌的代码无需修改:

string accessToken = await _tokenAcquisition.GetAccessTokenForUserAsync(Scopes);

下游Web API配置检查

  • 配置文件中AzureAd节点的Authority地址同样要带/v2.0后缀,和Web应用的租户、用户流配置保持一致。
  • 可以在注册认证服务时显式指定令牌校验规则,避免版本兼容问题:
services.AddMicrosoftIdentityWebApiAuthentication(Configuration, "AzureAd", o =>
{
    o.TokenValidationParameters.ValidIssuer = $"https://{Configuration["AzureAd:Domain"]}/{Configuration["AzureAd:TenantId"]}/v2.0/";
});

验证方法

拿到访问令牌后,粘贴到JWT解析工具中查看两个字段:

  • ver字段值为2.0代表令牌版本正确
  • iss字段带/v2.0后缀代表是从2.0端点签发的令牌

内容的提问来源于stack exchange,提问作者Rene Tomlinson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:24:01