我一直在使用我自己的内部自定义授权模型来评估用户是否有权查看、编辑、删除或创建项目。例如,我使用它的一个地方是确定用户是否有权查看资源。我有一些限制,例如项目是否发布,用户是否属于必要的组/角色等。
我将所有这些信息存储在一个数据库中,我在其中审核权限以及谁更改了给定实体的权限。为了评估用户是否有权限,我有一个 Hibernate 事件侦听器,它获取当前用户和其他上下文信息并针对实体进行评估。
这是一个好的安全模型吗,JAAS / JAAC 或 DROOLS 会在这里更好地工作吗?
Spring Security 和 Shiro 可能是使用最广泛的安全框架,我现在可能会将它们用于项目。然而,当应用服务器已经完全测试并内置集成安全性 (JAAS) 时,在应用服务器之上拥有一层似乎是一种耻辱。我很期待看到PicketBox提供的东西,Seam Security 3.0是建立在它之上的,它似乎更自然地适合应用服务器已经提供的功能,只是具有一些不错的功能,例如开放 ID 支持。
代替 JAAS 或基于规则引擎的解决方案,我会考虑使用Apache Shiro(以前称为 JSecurity)来实现可插入且灵活的 Authentication and Authorization。看看什么是Shiro?.
但是,如果您有一个可行的解决方案,如果它完成了工作,为什么不坚持下去。
我意识到我参加聚会有点晚了,但是Spring Security也是一个非常强大的选择,特别是它的 ACL 模块可以做很多你正在寻找的事情。