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

问题描述:

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

不是你的问题的确定性答案可能(因为它不涉及2范围) - 但它可能会导致你的某个地方。

林假设你使用TokenValidation middleware,你的API是使用IdentityServerAuthentication

你可以有一个角色要求,这表明什么样的作用用户(即用户,管理员)设置。 然后,您可以使用[Authorize(Roles="admin")]属性检查admin api的角色,对于用户api,只需使用[Authorize]即可确保用户已登录,或将这两个角色指定为逗号分隔列表([Authorize(Roles="admin,user")])如果需要的话。

即:

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

这是对授权文档的链接属性为.NET核心:

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