2

我正在寻找具有对象粒度的 Java Web 应用程序的安全框架。

这意味着我不只是想通过 url 或角色进行过滤,而是通过系统内域对象的特定用户所有权进行过滤。

例如,如果有一个Message对象有一个Sender用户和一个Receiver用户,我希望能够对其进行配置,以便每个消息都可以被它的发送者 RW 和它的接收者 RO。

或者,例如,所有用户都可以查看所有用户配置文件,但只能由所有者编辑。

当然,这些规则我想用元数据(注释、xml 文件等)来定义它们,而不是嵌入到我的业务逻辑中。

外面有这样的野兽吗?最好是开源的。

4

3 回答 3

3

Spring Security可以使用 AOP提供方法安全性和“安全对象”之类的东西。

于 2009-11-05T12:38:19.273 回答
1

您正在寻找访问控制列表 (ACL)。与其他受访者一样,我认为 Spring Security 值得在这里查看——Acegi 正是 Spring Security 在重命名之前所使用的名称。Spring Security 确实明确支持 ACL(除了基于 URL、基于角色和基于组的访问控制)。它支持 XML 和基于注释的配置。您可以将 ACL 过滤应用于视图(使用标记库来决定在 JSP 中呈现或抑制什么)、返回单个域对象的方法(决定是否允许方法调用成功)以及返回集合(在返回之前决定要从集合中过滤掉哪些对象)。

您可能能够为简单的需求滚动自己的 ACL 代码,但在我看来,ACL 很快就会变得棘手。特别是如果你有很多领域对象并且你必须开始认真对待性能管理。

于 2009-11-06T06:52:08.267 回答
0

查看此链接Acegi Security Fundementals - 它有点过时,但仍为您提供 Spring Security 的对象级授权机制的主要概念。

于 2009-11-05T15:38:19.990 回答