IdentityServer4 中 WebApi 控制器的基于角色的授权?

Role based Authorization on WebApi Controllers in IdentityServer4?

如果我有两个 .net 核心 WebApi 控制器,AdminController 和 UserController(在一个项目中)。两者都需要授权,那么我如何在 IdentityServer4 中将它们设置为 2 个范围,以便 Admin 用户可以访问两个控制器,但简单用户无法访问 Admin 控制器,而只能访问简单用户控制器?我的客户是Angular 2类型。有没有显示基于角色的授权的例子? 谢谢,特立独行

可能不是您问题的最终答案(因为它不涉及 2 个范围)- 但它可能会带您到某个地方。

我假设你使用 TokenValidation middleware, and that your api is setup using IdentityServerAuthentication

您可以有一个角色声明,它指示用户具有什么角色(即用户、管理员)。 然后,您可以使用 [Authorize(Roles="admin")] 属性检查管理员 api 的角色,而对于用户 api,只需使用 [Authorize] 即可确保用户是已登录,或在需要时将这两个角色指定为逗号分隔列表 ([Authorize(Roles="admin,user")])。

即:

[Authorize(Roles="Admin")]
public class AdminController : ApiController
{

这是关于 .net Core 的授权属性的文档的 link:

https://docs.microsoft.com/en-us/aspnet/core/security/authorization/roles