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
如果我有两个 .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