spring-security:多少定制是明智的?

Posted

技术标签:

【中文标题】spring-security:多少定制是明智的?【英文标题】:spring-security: how much customization is wise? 【发布时间】:2011-11-21 04:38:26 【问题描述】:

在 Spring Security 方面,有多少自定义实现是明智的?它的优化程度如何,或者哪些部分优化得最多,除非绝对必要,否则不应该在哪里自定义实现?

我想知道这一点,因为我正在考虑一种实现动态 ACL 的方法,该 ACL 授予或撤销对单个对象以及该类型的所有对象甚至任何字符串标识符的主体访问权限。如果我想说的话

@PreAuthorize("hasPermission(#person, details)")
public void getDetailsForPerson(Person person)

还有

@PreAuthorize("hasPermission('package.path.Person', read)") 
public void getAllPersons()

还有

@PreAuthorize("hasPermission('Person', read)") 
public void getAllPersons()

还有

@PreAuthorize("hasPermission(#id, 'package.path.Person', read)")
public void getOnePerson(int id)

我将不得不实施PermissionEvaluator。现在,当我这样做时,为什么我要使用确切的 spring-security ACL 数据模型(如 Spring Security Reference Appendix A.3 中所述)而不是实现我自己的?如果我想允许对对象类型或字符串以及对象实例进行权限评估,我将不得不实现我自己的ACLService

ObjectIdentity 查找也是如此:我必须自己实现这些,并且我想从 @Entitys serialVersionUID 生成 OID 以便能够授予对类型权限的访问权限。

所以当我在考虑越来越多的自定义实现时,我想知道我是否仍在正确的轨道上。查看类似the Denksoft blog 的教程。我觉得我错过了我们以后可能需要的很多 spring-security 的功能。或者仅仅是 spring-security 非常强大和复杂,以防你需要它,但如果你愿意,你可以自己完成大部分工作,只需使用通用框架将它们组合在一起?

或者我是否因为不坚持经过测试的实施而造成潜在的安全漏洞?因为我坚持使用 spring-security 提供的接口,所以从安全和软件设计的角度来看,我的想法是否已经危险或仍然可以接受?我还没有自定义太多给定的实现...

所以......我们计划做什么(类型和对象的权限)以及自定义 spring-security 的想法将非常受欢迎。

干杯!

【问题讨论】:

【参考方案1】:

嗯,似乎没有人愿意在这里分享他们关于自定义 Spring Security 的经验、想法或技巧,所以我将其标记为已回答。

简而言之,我们最终做的是自定义实现与数据库交互的所有 Spring 安全接口,以使用我们自己的 JPA/Hibernate 访问堆栈。这意味着实施

身份验证

CustomerDetailsService 处理我们的帐户表 RoleHierarchy 来解析我们自己的层次结构表(与 Role 的 1:n 关系,其中 m:n 与 Account 有一个关系) PersistentLoginToken 将记住我的令牌保存在我们的数据库中

对于我们特殊的访问控制列表,它还支持为一个类型的所有对象设置权限:

MutableAclServiceAclAccessControlEntryLookupStrategy 构建 ACL PermissionEvaluator 支持类类型(作为字符串)参数

所以总而言之,我们的实现还需要做相当多的工作,但我们的实现仍然缺少一些东西。它值得吗?当然,因为我们现在拥有更多的控制权、更多的灵活性和新的功能。稳定吗?我们将看到,到目前为止,针对自定义实现的 45 个单元测试听起来很多,但实际上并非如此。

【讨论】:

我目前也在想如何在我们的应用程序中实现hasPermission。最大的问题是“ACL 还是非 ACL?”。使用自定义 PermissionEvaluator 似乎一切皆有可能,对于 ACL,如果您不使用它们的数据库内默认实现,则必须实现很多。回顾您的项目,您认为 ACL 值得吗?您什么时候选择 ACL 或只使用自定义 PermissionEvaluator 最后我认为这是值得的,所以我把它贴在这里:***.com/questions/26549389/…

以上是关于spring-security:多少定制是明智的?的主要内容,如果未能解决你的问题,请参考以下文章

定制ERP系统价格 ERP定制开发多少钱

手机APP定制开发费用是多少

web应用安全框架选型:Spring Security与Apache Shiro

定制一款即时通讯APP(类似微信)需要多少钱?

本来这个世界没多少客户定制,但是就产生了不少所谓的定制

商超行业微信小程序开发定制一般多少钱 (行业技术人员解读)