【发布时间】:2021-12-21 12:46:56
【问题描述】:
我有一个正在运行的 .NET 5 Web-API,它带有一个生产环境中的 Blazor 服务器客户端。我想使用应用角色从个人用户帐户切换到 Azure AD,以对我的控制器中的特定用户进行身份验证。我找到了很多关于 Webassembly 的信息,但没有找到关于 Blazor Server 的信息。
是否有人为带有 Blazor 服务器客户端并集成 Azure 应用角色的 .NET 5/6 Web-Api 提供有效的解决方案?
应用程序已经在 Azure 门户中注册等等,我只需要知道如何将应用程序角色特定的东西传递给我的 API,这样我的控制器就可以使用 [Authorize("Admin")] 东西。我怀疑它也会使用不记名令牌。
编辑: 非常感谢您的阅读。所以我发现如果我在我的控制器中使用这样的东西,只使用 [Authorize] 属性而不使用任何角色:
var identities = HttpContext.User.Identities.ToList();
foreach (var item in identities)
{
if (item.RoleClaimType == "admin")
{
// return or do something
}
}
它可以正常工作,但必须有一些更顺畅的解决方案,还是我这样做完全错误?当我查看 WASM 示例时,他们会使用令牌获取 AppRoles,而控制器可以简单地使用 [Authorize(Roles = "xyz")] 属性。我在这里想念什么? :/
顺便说一句,这就是我的 Program.cs 现在的样子:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(options =>
{
builder.Configuration.Bind("AzureAd", options);
options.TokenValidationParameters.RoleClaimType =
"admin";
options.TokenValidationParameters.RoleClaimType = "doku";
},
options => { builder.Configuration.Bind("AzureAd", options); });
谢谢你们
【问题讨论】:
标签: azure-active-directory blazor roles blazor-server-side