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

Azure AD SPA与WebAPI登录报错AADSTS65005:请求资源未在权限列表中

解决AADSTS65005: Invalid Resource错误的步骤

你遇到的这个AADSTS65005错误,本质是Azure AD认为你的SPA请求访问的WebAPI资源没有被授权给你的SPA应用,或者资源标识符配置有误。下面是具体的排查和解决步骤:

1. 确认WebAPI的资源标识符(Application ID URI)

首先得拿到WebAPI在Azure AD里的正确资源标识:

  • 登录Azure门户,找到你的WebAPI对应的应用注册
  • 切换到「公开API」页面,复制这里的Application ID URI——这个就是WebAPI的唯一资源标识,格式通常是api://{webapi-client-id}或者你自定义的URI,一定要确保复制的内容完全准确,不能有拼写错误。

2. 给SPA应用配置WebAPI的访问权限

接下来要让Azure AD知道你的SPA有权访问这个WebAPI:

  • 找到SPA对应的应用注册,进入「API权限」页面
  • 点击「添加权限」→ 选择「我的API」,找到你的WebAPI应用
  • 勾选需要的委托权限(比如常见的user_impersonation),然后点击「添加权限」
  • 如果是租户内的应用,记得点击「授予管理员同意」(需要有租户管理员权限),这样所有用户都能使用这个权限。

3. 验证SPA代码中的资源配置

回到你的AngularJS代码,确保请求token时指定的resource参数和刚才复制的WebAPI Application ID URI完全一致:
比如在ADAL的初始化配置里,要写成这样:

adalAuthenticationServiceProvider.init({
    clientId: '你的SPA客户端ID',
    resource: 'api://12345678-1234-1234-1234-1234567890ab', // 这里要和WebAPI的Application ID URI完全匹配
    // 其他配置项...
}, $httpProvider);

这里最容易犯的错误是资源URI拼写错误,比如多了个斜杠、少了前缀,或者用了WebAPI的客户端ID而不是Application ID URI,一定要仔细核对。

4. 检查WebAPI的验证配置

最后要确保WebAPI本身的验证配置也正确:
在WebAPI的Startup.cs里,配置Azure AD Bearer验证时,Audience要设置为WebAPI的Application ID URI:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddAzureAdBearer(options => Configuration.Bind("AzureAd", options));

对应的appsettings.json配置:

"AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "你的租户域名.onmicrosoft.com",
    "TenantId": "你的租户ID",
    "ClientId": "你的WebAPI客户端ID",
    "Audience": "api://12345678-1234-1234-1234-1234567890ab" // 同样要匹配WebAPI的Application ID URI
}

最后一步:清除缓存重新测试

配置完成后,记得清除浏览器的缓存,或者用隐私窗口重新登录,因为之前获取的旧token可能还是用了错误的资源,导致问题依然存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:50:28