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

.NET服务调用OAuth2.0+Entra Id保护服务时403授权失败排查

问题分析与修复方案

你遇到的403错误核心原因是客户端凭证流(Client Credentials Flow)的Token特性与目标服务的权限验证逻辑不匹配,结合你的代码和场景,具体问题及修复步骤如下:

问题根源

你使用AcquireTokenForClient获取Token的方式属于客户端凭证流,这种流程下:

  1. Token中的权限(Scope)格式为api://{目标服务ClientID}/{权限名},而非单纯的WriteOperations
  2. 目标服务的[RequiredScope("WriteOperations")]默认只会匹配简单权限名,导致验证失败
  3. 调用方服务未在Azure AD中获得目标服务的应用权限授权(客户端凭证流不使用委托权限)

具体修复步骤

1. 修正Token请求的Scope格式

客户端凭证流要求Scope必须包含目标服务的应用ID URI(或ClientID),修改你的授权代码:

// 替换为目标服务的ClientID或应用ID URI,拼接权限名
var targetApiClientId = "目标服务的Azure AD ClientID";
var scopes = new string[] { $"api://{targetApiClientId}/WriteOperations" };

var authority = $"https://login.microsoftonline.com/{_config.TennantId}/v2.0";
var app = ConfidentialClientApplicationBuilder
              .Create(_config.ClientId)
              .WithClientSecret(_config.ClientSecret)
              .WithAuthority(authority)
              .Build();

var result = await app.AcquireTokenForClient(scopes)
                      .ExecuteAsync();

2. 在Azure AD中配置应用权限

  • 登录Azure门户,找到调用方服务的应用注册
  • 进入「API权限」→「添加权限」→「我的API」,选择目标服务
  • 选择应用权限(注意不是委托权限),勾选WriteOperations,点击「添加权限」
  • 点击「授予管理员同意」(必须完成此步骤,权限才会生效)

3. 调整目标服务的验证配置(可选)

如果希望保持[RequiredScope("WriteOperations")]的写法不变,可在目标服务的认证配置中禁用自动声明映射,确保权限验证正常:

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApi(options =>
    {
        builder.Configuration.Bind("AzureAd", options);
        // 禁用自动映射,避免Scope声明被修改
        options.MapInboundClaims = false;
    }, options => builder.Configuration.Bind("AzureAd", options));

同时确保appsettings.json的AzureAd配置包含正确的受众(Audience):

"AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "你的租户ID",
    "ClientId": "目标服务的ClientID",
    "Audience": "api://目标服务的ClientID"
}

4. 验证Token有效性

使用jwt.ms解析获取到的Token,检查以下内容:

  • aud声明是否等于目标服务的ClientID或应用ID URI
  • roles或scp声明中是否包含WriteOperations

内容的提问来源于stack exchange,提问作者Mike Bowman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:07:06