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

Azure AD身份验证:多Scope配置问题咨询

正确配置Azure AD实现API授权+Graph调用(无需手动令牌/客户端密钥)

核心误区纠正

你当前的问题本质是混淆了客户端直接请求Graph权限和**API代表用户调用Graph(On-Behalf-Of流程,简称OBO)**的场景:

  • 客户端获取的令牌受众(aud)是你的API,不能直接用来调用Graph
  • 不能在客户端的Scope里同时混合API和Graph的权限,Azure AD不允许一个令牌同时对应两个不同的服务受众

一、Azure AD应用注册修正配置

1. 客户端应用(React/Postman)

  • 仅需添加对API应用的Delegated权限:即你暴露的api://someguid/testscope,无需添加任何Microsoft Graph权限
  • 确保重定向URI配置正确:Postman测试用Postman自带的回调地址,React应用用项目实际域名(如http://localhost:3000)
  • 确认客户端应用已被授权使用API的testscope权限(在API应用的「暴露API」→「授权的客户端应用」中添加)

2. API应用(.NET Core 6)

  • 保留已添加的Microsoft Graph email、User.Read Delegated权限,必须完成管理员同意(单租户应用)或确保用户能进行权限同意(多租户应用)
  • 确认api://someguid/testscope为Delegated类型,且已启用

二、.NET Core API的OBO流程配置

API需要通过OBO流程自动将客户端令牌转换为Graph令牌,无需手动处理:

1. 配置appsettings.json

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "你的租户ID",
    "ClientId": "你的API应用ClientID"
  },
  "DownstreamApi": {
    "BaseUrl": "https://graph.microsoft.com/v1.0",
    "Scopes": "https://graph.microsoft.com/User.Read https://graph.microsoft.com/email"
  }
}

2. 配置Program.cs服务

var builder = WebApplication.CreateBuilder(args);

// 集成Azure AD身份验证+OBO流程+Graph客户端
builder.Services.AddMicrosoftIdentityWebApiAuthentication(builder.Configuration)
    .EnableTokenAcquisitionToCallDownstreamApi()
    .AddMicrosoftGraph(builder.Configuration.GetSection("DownstreamApi"))
    .AddInMemoryTokenCaches();

builder.Services.AddControllers();

var app = builder.Build();

app.UseAuthentication();
app.UseAuthorization();

app.MapControllers();
app.Run();

三、Postman测试正确步骤

  1. 选择Auth Code Flow with PKCE模式
  2. Scope仅填写:api://someguid/testscope(不要添加任何Graph相关的Scope)
  3. 获取令牌后,调用API接口:API内部会自动通过OBO流程获取Graph令牌,调用/me接口拿到邮箱信息

四、问题对应解释

  • 测试1:仅用API Scope时,API授权通过,但直接用API令牌调用Graph失败——因为令牌受众是API,Graph不认,必须通过OBO换Graph令牌
  • 测试2:混合API和Graph Scope时,Azure AD拒绝颁发令牌——一个令牌只能对应一个受众(API或Graph),无法同时授权两个服务
  • 测试3:仅用Graph Scope时,API返回401——令牌受众是Graph,API不认这个令牌

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:25:49