我正在学习Apache Shiro,我找到了这篇文章:
The New RBAC: Resource-Based Access Control
作者说:
.......如果您可以将行为(权限)直接分配给角色 想。从这个意义上讲,您仍然可以使用基于角色的访问控制 安全策略 - 只是你会有一个明确的RBAC策略 而不是传统的隐含策略。
但这引出了一个问题 - 为何停止角色?你可以分配 直接对用户,组或其他任何行为的行为 安全政策可能允许。
似乎作者更喜欢直接存储用户和权限的关系而不是通过角色。
虽然看起来这很简单明了,但我有一些问题:
其中两个之间是否有任何本质区别?
数据库架构。
在基于角色的访问控制中,通常我们使用三个表来描述关系:
user
role
user_role
否如果我使用基于资源的访问控制,构建表的常规做法是什么?
答案 0 :(得分:10)
这是我第一次听说基于资源的访问控制。
我会非常小心地走这条路。在授权领域,基本上有两个标准:
基于资源的访问控制似乎是Stormpath发明的模型,仅由他们支持。它可能很好,但它只适用于他们的环境。
基于角色和基于属性的访问控制是NIST和其他标准化机构(如OASIS(其中SAML和XACML在10年前定义并且今天仍然受支持)支持的广泛接受的范例。
问题是:为什么基于角色的访问控制对您来说不够?你有角色爆炸问题吗?它表达不够吗?您是否需要实现用户,资源和上下文之间的关系?
ABAC和XACML可以让你这样做。我在YouTube上发布了一段简单的视频,处理基于属性的访问控制。有一个look。
底线是RBAC和ABAC是跨多个应用程序和层的标准。基于资源的访问控制仅适用于Apache Shiro。