我正在寻找具有Object粒度的Java Web应用程序的安全框架。
这意味着我不仅希望按网址或角色进行过滤,而是根据系统内域对象的特定用户所有权进行过滤。
例如,如果有一个Message
对象具有Sender
用户和Receiver
用户,我希望能够对其进行配置,以便每个消息都可以通过RW它的发送者和RO由其接收者。
或者,例如,所有用户配置文件都可供所有用户查看,但只能由所有者编辑。
当然,这个规则我想用元数据(注释,xml文件,等等)来定义它们,而不是嵌入我的业务逻辑中。
那里有野兽吗?最好是开源。
答案 0 :(得分:3)
Spring Security可以使用AOP提供method security and "secure objects"之类的内容。
答案 1 :(得分:1)
您正在寻找访问控制列表(ACL)。和其他受访者一样,我认为Spring Security值得在这里查看 - Acegi就是Spring Security在重命名之前调用的。 Spring Security确实支持ACL(除了基于URL,基于角色和基于组的访问控制之外)。它支持XML和基于注释的配置。您可以对视图应用ACL过滤(使用taglibs来决定在JSP中呈现或抑制的内容),返回单个域对象的方法(决定是否允许方法调用成功),以及返回a的方法集合(在返回之前决定要从集合中过滤掉哪些对象)。
您可能可以根据简单的要求滚动自己的ACL代码,但在我看来,ACL很快就会变得棘手。特别是如果你有很多域对象,你必须认真对待性能管理。
答案 2 :(得分:0)
查看此链接Acegi Security Fundementals - 它稍微过时但仍然提供了Spring Security对象级授权机制的主要概念。