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

如何将Excel连接到Azure中受Azure AD保护的WebAPI

解决Excel从Web导入数据访问AAD保护API时的AADSTS500011错误

这个错误的核心是Azure AD找不到你指定的资源主体,本质是你的API在AAD中的唯一标识配置存在问题,按以下步骤调整即可:

1. 确认API应用注册的标识符URI(Application ID URI)

  • 登录Azure门户,找到你的API对应的应用注册(注意是独立的应用注册条目,不是App Service)
  • 进入「概述」页面,查看「Application ID URI」字段:
    • 如果该值为空,转到「公开API」页面,点击「添加应用程序ID URI」,设置唯一标识,比如api://<你的API应用ID>(应用ID可在概述页面找到);若API有自定义HTTPS域名,也可以使用https://你的自定义域名.com
    • 确保这个URI无拼写错误,且后续配置全部使用该值

2. 修正API的JWT Bearer验证配置

在.NET 7 API的JWT Bearer配置中,完成两个关键调整:

  • 确保ValidAudience与上述Application ID URI完全一致:
    options.TokenValidationParameters = new TokenValidationParameters
    {
        ValidAudience = "api://xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", // 替换为你的Application ID URI
        // 其他配置参数...
    };
    
  • 更新Challenge配置,明确指定资源或范围(v2.0端点推荐用scope):
    // 兼容v1.0流程的resource参数写法
    options.Challenge = $"Bearer authorization_uri=\"https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/oauth2/v2.0/authorize\", resource=\"api://xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"";
    
    // v2.0标准流程的scope参数写法
    options.Challenge = $"Bearer authorization_uri=\"https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/oauth2/v2.0/authorize\", scope=\"api://xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/.default\"";
    

3. 给Excel内置应用授予API访问权限

Excel的「从Web导入数据」使用微软内置应用程序,需在API的应用注册中配置权限:

  • 进入API的应用注册,转到「公开API」→「添加权限」
  • 选择「我的API」,找到你的API,勾选对应的委托权限(用户身份访问需用委托权限)
  • 企业租户需点击「授予管理员同意」使权限生效;个人租户用户登录时会自动触发授权提示

4. 验证资源匹配性

确保Excel发起认证请求时使用的资源值,与API的Application ID URI完全一致:

  • 若之前用API的URL(比如https://yourapi.azurewebsites.net)作为资源,但Application ID URI是api://xxxxxxx,就会触发找不到资源主体的错误
  • 要么将Application ID URI改为API的URL(仅限有自定义HTTPS域名的场景),要么在Challenge中明确指定正确的resource/scope,引导Excel请求正确的资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:15:36