Blazor应用使用登录用户凭据访问Azure App Configuration实现与排错
Azure App Configuration 调用403问题修复方案
你遇到的403问题是由权限配置错误、代码配置遗漏、角色分配不匹配三类问题共同导致的,按以下步骤修复即可:
1. 修正Azure AD应用的API权限配置
- 进入Azure AD应用注册的「API权限」页面,删除无关的冗余权限
- 点击「添加权限」,在API列表中选择Azure 应用配置服务(不要选Microsoft Graph)
- 选择「委派权限」分类,勾选
user_impersonation权限,该权限是应用代表登录用户访问App Configuration数据的必需权限 - 点击「授予管理员同意」完成权限生效配置,跳过这一步会导致普通用户无法获取有效权限的令牌
2. 修正代码中的令牌申请范围
你当前代码中仅申请了Microsoft Graph的User.Read权限,没有加入App Configuration的访问范围,修改Program.cs中对应代码,补充App Configuration的.default范围:
.EnableTokenAcquisitionToCallDownstreamApi(new []{ "User.Read", "https://<替换为你的App Configuration资源名称>.azconfig.io/.default" }) .AddInMemoryTokenCaches();
注意:填写的资源URI必须和你App Configuration实例的终结点完全匹配,结尾不要添加多余斜杠,否则会导致获取的令牌受众不匹配,直接触发403。
3. 修正RBAC角色分配
你当前分配的Contributor角色属于Azure管理平面(ARM)权限,仅支持管理资源的创建、删除、配置等运维操作,不具备访问App Configuration存储内键值数据的数据平面权限:
- 进入目标App Configuration资源的「访问控制(IAM)」页面
- 添加角色分配:如果仅需要读取配置,选择
App Configuration 数据读取者角色;如果需要新增、修改、删除配置,选择App Configuration 数据所有者角色 - 将角色分配给你测试使用的用户账号,等待5分钟左右等待权限生效
4. 修复代码中的笔误
你贴出的ConfigurationService.cs存在两处明显笔误,会导致运行时逻辑异常,修正后代码如下:
using Azure.Data.AppConfiguration; using Microsoft.Extensions.Options; using Microsoft.Identity.Web; public class ConfigurationService { private readonly ConfigurationClient _client; public ConfigurationService(IOptions<ConfigurationSettings> options, ITokenAcquisition tokenAcquisition) { _client = new ConfigurationClient(new Uri(options.Value.Endpoint), new TokenAcquisitionTokenCredential(tokenAcquisition)); } public async Task<ConfigurationSetting> GetSettings() { // 之前错误调用了不存在的静态Client,改为调用注入的实例_client return await _client.GetConfigurationSettingAsync("key"); } }
验证标准
修改完成后重启应用,重新登录触发令牌刷新,拿到的访问令牌解码后满足两个条件即可正常调用:
aud(令牌受众)字段值为https://azconfig.io或你对应App Configuration实例的资源URIscp(委派权限)字段包含user_impersonation值
内容的提问来源于stack exchange,提问作者Erik Buter
相关产品推荐
相关产品推荐

