如何使用登录用户的凭据从 Blazor 应用在 Azure 应用程序配置中读取/写入配置数据?



我正在构建一个门户网站,用于管理我们的一些Azure应用程序配置商店的值,为一些复杂的json配置值提供一个用户友好的编辑器。

我想我有所有需要的设置,但我只得到401或403响应时,实际使用客户端。这个用例的文档似乎缺乏,所以我希望有人能给一些关于如何实现这个的指导。

相关代码片段:

Editor.razor

@using Microsoft.Identity.Web
@inject MicrosoftIdentityConsentAndConditionalAccessHandler ConsentHandler
@inject ConfigurationService ConfigurationService
<editor/>
@code{
private object Value { get; set; }
protected override async Task OnInitializedAsync()
{
try
{
Value = await ConfigurationService.GetSettings();
}
catch (Exception ex)
{
ConsentHandler.HandleException(ex);
}
await base.OnInitializedAsync();
}

ConfigurationService.cs

using Azure.Data.AppConfiguration;
using Microsoft.Extensions.Options;
using Microsoft.Identity.Web;
private readonly ConfigurationClient _client;
public ConfigurationClient(IOptions<ConfigurationSettings> options, ITokenAcquisition tokenAcquisition)
{
_client = new ConfigurationClient(new Uri(options.Value.Endpoint), new TokenAcquisitionTokenCredential(tokenAcquisition));
}
public async Task<object> GetSettings()
{
return await ConfigurationClient.GetConfigurationSettingAsync("key");
}

Program.cs

//code
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(configuration.GetSection("AzureAd"))
.EnableTokenAcquisitionToCallDownstreamApi(new []{"User.Read"})
.AddInMemoryTokenCaches();
builder.Services.AddControllersWithViews()
.AddMicrosoftIdentityUI();
builder.Services.AddAuthorization(options =>
{
options.FallbackPolicy = options.DefaultPolicy;
});
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor()
.AddMicrosoftIdentityConsentHandler();
//more code

appsettings.json

{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "redacted.onmicrosoft.com",
"TenantId": "redacted",
"ClientId": "redacted",
"ClientSecret": "redacted",
"CallbackPath": "/signin-oidc"
}
}

web应用程序已在Azure AD中注册,并已设置并运行身份验证。我已经创建了一个客户端秘密,并在应用程序配置中使用它。未设置令牌配置。API权限如下:Azure AD API权限"暴露api"下没有定义任何设置。选项卡。

我正在测试的用户是我自己的,并且具有"贡献者";

网站允许登录,在正确访问相关页面时,请求用户允许访问App Configuration资源。检查流量显示应用程序请求了一个在配置资源上具有.default作用域的访问令牌,并成功接收到一个。使用令牌会导致403禁止。

<Contributor"角色不会让你访问应用配置中的数据。你需要授予自己>应用配置数据所有者的角色。详情请参阅以下文件:

https://learn.microsoft.com/en-us/azure/azure-app-configuration/concept-enable-rbac azure-built-in-roles-for-azure-app-configuration

最新更新