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

时间:2016-12-16 20:14:40

标签: asp.net-core-1.0 openid-connect identityserver4

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

1 个答案:

答案 0 :(得分:1)

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

我假设您使用TokenValidation middleware,并且您的api是使用IdentityServerAuthentication设置的

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

即:

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

以下是.net Core的Authorize属性上的文档链接:

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