如何配置Azure应用服务调用Azure .NET Core API的全域权限(无需前端令牌处理)
我来帮你梳理下实现这个需求的关键步骤,都是基于Azure AD的配置,基本不用改太多前端代码就能搞定:
核心配置思路
要实现Azure全权处理认证、前端能直接调用API所有端点的目标,关键是让前端应用的身份令牌被API自动信任,同时给前端授予API的全域应用权限,不用逐个配置端点权限。
1. 确认API应用注册的「应用ID URI」配置正确
- 打开Azure AD,找到你的.NET Core API对应的应用注册,在「概述」页面找到「应用ID URI」。如果还没设置,点击「设置」按钮生成一个,格式通常是
api://{你的API客户端ID}。 - 这个URI是API的唯一身份标识,后续前端应用要通过它请求权限,必须确保它固定且准确。
2. 给API应用注册添加全域应用权限
- 进入API应用注册的「应用权限」页面,点击「添加权限」→「我的API」,选中你的.NET Core API。
- 注意别选「委派权限」(那是给终端用户的权限),要选应用权限(这是给前端应用本身的权限,符合你要的全域访问需求)。
- 如果权限列表里没有现成的全域权限,就先去API的「公开API」页面添加一个应用权限范围,设置为允许「应用角色」,命名可以是
access_as_application这类清晰的名称。 - 添加完权限后,一定要点击「授予管理员同意」——这一步是关键,不做的话权限根本不会生效。
3. 给前端应用注册配置API的全域权限
- 找到你的Angular+Node.js应用对应的Azure AD注册,进入「API权限」页面,点击「添加权限」→「我的API」,选中你的.NET Core API。
- 同样选择应用权限,勾选之前添加的全域权限,然后点击「授予管理员同意」完成配置。
4. 配置API的身份验证,自动信任前端令牌
- 对于.NET Core API,在
appsettings.json里配置Azure AD验证参数,确保它信任前端应用的身份,并且识别正确的令牌受众:"AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "{你的Azure AD租户ID}", "ClientId": "{API的客户端ID}", "Audience": "{API的应用ID URI}" } - 然后在
Program.cs里添加认证中间件,启用JWT验证,让API自动验证令牌的有效性:builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd")); - 记得给API的所有端点加上
[Authorize]属性,这样只有携带有效令牌的请求才能访问。
5. 配置前端App Service,自动获取并携带令牌
- 进入前端应用的Azure App Service控制台,找到「认证」→「身份提供者」,选择Microsoft Identity。
- 在「认证设置」里勾选「登录时获取令牌」,然后在「目标资源」中填入你的API的应用ID URI。
- 这样配置后,用户登录时Azure App Service会自动帮前端获取访问API的令牌,并存到会话里。前端发起请求到API时,会自动带上这个令牌,完全不用在Angular代码里写任何令牌请求逻辑。
6. 验证配置是否生效
- 部署更新后的API和前端应用,登录后尝试调用任意API端点,如果能正常返回数据,就说明配置成功了。
- 如果遇到403错误,先检查这几点:
- 应用权限是否已经完成「授予管理员同意」
- API的「应用ID URI」和配置文件里的
Audience是否一致 - 前端App Service的「目标资源」是否填对了API的应用ID URI
内容的提问来源于stack exchange,提问作者mo_maat
相关产品推荐
相关产品推荐

