如何通过 Azure Active Directory 在 Blazor Server 中使用 Azure AppRoles
How to use Azure AppRoles in Blazor Server with Azure Active Directory
我有一个 up 和 运行 .NET 5 Web-API 与生产中的 Blazor 服务器客户端。我想使用应用程序角色从个人用户帐户切换到 Azure AD,以对我的控制器中的特定用户进行身份验证。我找到了很多关于 Webassembly 的信息,但 none 是关于 Blazor Server 的。
是否有人为 .NET 5/6 Web-Api 与 Blazor 服务器客户端和集成 Azure 应用程序角色提供了有效的解决方案?
应用程序已经在 Azure 门户等中注册,我只需要知道如何将应用程序角色特定的东西传递给我的 API,这样我的控制器就可以使用 [Authorize("Admin “)] 东西。我怀疑它也会使用 Bearer Tokens。
编辑:
非常感谢阅读。所以我发现如果我在我的控制器中使用类似这样的东西,只使用 [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); });
谢谢 guys/gals <3
请检查给定的参考文献是否对您有用。
服务器 API 应用程序可以授权用户访问安全 API 具有安全组、AAD 管理员角色和应用程序角色授权策略的端点
- 在 SERVER 应用程序的 Program.cs 中,将声明指定为 roleclaim
示例:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(options =>
{
Configuration.Bind("AzureAd", options);
options.TokenValidationParameters.RoleClaimType =
"http://schemas.microsoft.com/ws/2008/06/identity/claims/role";
},
options => { Configuration.Bind("AzureAd", options); });
然后就可以在授权控制器上使用admin角色访问
[授权(角色=“管理员”)]
在App roles部分你可以看到两者的配置
服务器和客户端。
在portal的manifest editor中编辑app角色然后给
适当的 api 权限,公开范围并授予管理员权限
同意 > 请参阅 Add app roles and get them from a token。并且
过程逻辑必须包含 api.
所需的那些范围
Note : The appRoles manifest property of both the client and the
server Azure portal app registrations must include the same configured
roles.
请查看 this 以获取有关服务器和客户端应用程序指南的更多详细信息。
其他参考资料:
我有一个 up 和 运行 .NET 5 Web-API 与生产中的 Blazor 服务器客户端。我想使用应用程序角色从个人用户帐户切换到 Azure AD,以对我的控制器中的特定用户进行身份验证。我找到了很多关于 Webassembly 的信息,但 none 是关于 Blazor Server 的。
是否有人为 .NET 5/6 Web-Api 与 Blazor 服务器客户端和集成 Azure 应用程序角色提供了有效的解决方案?
应用程序已经在 Azure 门户等中注册,我只需要知道如何将应用程序角色特定的东西传递给我的 API,这样我的控制器就可以使用 [Authorize("Admin “)] 东西。我怀疑它也会使用 Bearer Tokens。
编辑: 非常感谢阅读。所以我发现如果我在我的控制器中使用类似这样的东西,只使用 [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); });
谢谢 guys/gals <3
请检查给定的参考文献是否对您有用。
服务器 API 应用程序可以授权用户访问安全 API 具有安全组、AAD 管理员角色和应用程序角色授权策略的端点
- 在 SERVER 应用程序的 Program.cs 中,将声明指定为 roleclaim
示例:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(options =>
{
Configuration.Bind("AzureAd", options);
options.TokenValidationParameters.RoleClaimType =
"http://schemas.microsoft.com/ws/2008/06/identity/claims/role";
},
options => { Configuration.Bind("AzureAd", options); });
然后就可以在授权控制器上使用admin角色访问
[授权(角色=“管理员”)]
在App roles部分你可以看到两者的配置 服务器和客户端。
在portal的manifest editor中编辑app角色然后给 适当的 api 权限,公开范围并授予管理员权限 同意 > 请参阅 Add app roles and get them from a token。并且 过程逻辑必须包含 api.
所需的那些范围
Note : The appRoles manifest property of both the client and the server Azure portal app registrations must include the same configured roles.
请查看 this 以获取有关服务器和客户端应用程序指南的更多详细信息。
其他参考资料: