【发布时间】:2014-12-20 09:04:52
【问题描述】:
Spring Security ACL 看起来非常强大,并且当您可以坚持使用它们的数据库实现时,它很容易实现。但是,当您必须实现自己的 Acl 和 AclService 时,它似乎变得更加复杂(例如,参见这个(旧的)very basic tutorial,只有约 26 页)并且似乎很难找到它的参考和示例(该教程来自 2008 年)。
例如,在我们的应用程序中,用户具有角色并属于部门。大多数时候,他们被允许根据他们的角色对属于他们部门的对象执行一些操作。在所有情况下,部门 + 角色足以决定是否应授予用户对特定对象的特定操作。
用户、角色和部门由外部应用程序管理,当用户连接时我们会从该应用程序中检索它们(我们使用的是 REST 服务,但它也可以是 LDAP 服务器)。
我们希望依靠@PreAuthorize('hasPermission(…)') 来实现域对象安全。因此有两种解决方案:
- 实现一个自定义的
PermissionEvaluator来完成整个检查;或 - 使用自定义
AclService实现 ACL,该AclService构建 ACL 正常工作所需的对象结构。
似乎实现整个AclService 会比实现PermissionEvaluator 更困难、更复杂,但ACL 似乎更标准。
您应该根据哪些标准实施其中一个?
【问题讨论】:
标签: spring security spring-security spring-security-acl