在阅读了control并看到了人们构建授权/访问控制的方式之后,这个问题浮现在我的脑海中:“为什么我们在检查用户是否被允许执行X操作时,而不是检查他们的权限?”
这就是我所理解的,用户有角色,角色有权限,这就是用户可以拥有权限的方式(用户不能显式地拥有分配给它的权限,它通过拥有角色获得权限)
我认为在处理添加用户的请求时检查像"AddUser“这样的权限是有意义的,但是在.Net库中,以及在RBAC中的许多例子中,我们看到它们检查角色。就像他们检查用户是否处于管理员的角色一样,而不是检查他/她是否拥有"AddUser“权限。
为什么?检查权限对我来说更有意义。
有人能在这里照亮我吗?
谢谢
发布于 2014-02-25 23:25:37
您是正确的-检查应用程序中的角色而不是权限不是基于角色的访问控制。Spring安全和其他许多重要的访问控制机制都宣传了这种安全反模式.要正确使用RBAC -在策略执行逻辑中执行权限检查。
发布于 2015-07-30 11:26:20
如果我们简化RBAC系统,RBAC是一种根据组织用户的权限限制对某些源或应用程序或应用程序某些特性的访问的方法。在这里,限制可以通过多个权限来实现,这些权限是管理员为限制访问而创建的,这些权限共同表示一个角色,该角色将分配给用户。
对于您的情况,您可能部分正确:)
但是考虑一下复杂应用程序的情况,其中有200个权限,管理员需要定义很少的权限集来通过角色来表示特定的行为,这将为用户创建某种复杂的定制和表单重新表示。
在这里,可能需要通过‘HasRole(’SomeRole‘)方法来检查以定义用户的确切行为。
所以,我的回答是,这两种方法在RBAC中同样重要。
1) HasPermission(‘permissionName’)
2) HasRole(‘roleName’)
一个好的RBAC解决方案应该提供这两种方法。市场上有这样的工具,你可以查一下。
https://stackoverflow.com/questions/20979090
复制相似问题