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

.NET Core 6 API客户端凭证认证调用返回401问题排查

.NET Core 6 API Azure AD认证401未授权问题

我尝试在.NET Core 6 API中通过Azure AD的客户端ID和客户端密钥完成认证,调用API端点时始终返回401未授权错误,使用Postman携带获取到的访问令牌请求也得到同样结果。已完成Azure应用注册并成功获取令牌,但认证始终不通过。

我的API认证配置代码

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApi(jwtBearerOptions =>
    { }, msIdentityOptions =>
    {
        configuration.Bind("AzureAd", optionsB);
        var defaultBackChannel = new HttpClient();
        defaultBackChannel.DefaultRequestHeaders.Add("Origin", "shard-manager");
        msIdentityOptions.Backchannel = defaultBackChannel;
        
    })
    .EnableTokenAcquisitionToCallDownstreamApi(e => { })
    .AddInMemoryTokenCaches();

相关截图

Azure应用注册截图

Azure应用注册截图1
Azure应用注册截图2

Postman请求截图

Postman请求截图

可能的问题排查点

  • 配置绑定错误:代码中configuration.Bind("AzureAd", optionsB)里的optionsB变量未定义,应该替换为msIdentityOptions,否则Azure AD的配置参数(如租户ID、客户端ID)无法正确绑定,导致认证逻辑缺失关键信息。
  • 令牌受众不匹配:解码获取到的访问令牌,检查aud字段是否与API应用注册的客户端ID一致。获取令牌时的scope必须是API的专属范围(如api://{API客户端ID}/.default),如果scope指向其他资源,API会判定令牌无效。
  • API权限未配置完整:确保用于获取令牌的客户端应用,已在Azure AD中添加API应用的权限,并且完成了管理员同意操作。
  • 中间件顺序错误:在Program.cs中,app.UseAuthentication()必须放在app.UseAuthorization()之前,否则请求会先进入授权逻辑,此时还未完成认证,直接返回401。
  • 租户信息配置错误:检查appsettings.json中的AzureAd配置,确认TenantId与应用注册的租户ID一致,避免因租户不匹配导致令牌签名验证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:35:01