我不是 Spring 4 的新手,但我是 Spring Security 4 ACL 的新手。我刚刚在我的 MVC Web 应用程序上实现了 Spring Security 4,它们都是后端 Web 服务。我所做的链接发布在这里:
http://stackoverflow.com/questions/33787085/spring-security-4-with-third-party-authentication-token
这增加了我的 URL 的安全性,只有具有特定角色的用户才能请求 URL。这很棒!我们以 SiteMinder 为例,我们没有传回用户名,而是在请求标头中传回了一个令牌。我们调用 OpenAM 并传入这个令牌,然后我们得到一个用户名。我们使用 Hibernate 身份验证从我们的数据库中获取用户信息,我们获取该用户的角色并为我们生成 UserDetails,这样,我们就有了这个经过身份验证的用户的 SecurityContext。
但现在我在同一个 MVC Web 应用程序中面临一个新挑战,那就是我想为我的对象添加 ACL 安全性。我已经做了大量的研究,还有更多的研究要做,我有几个问题。
看来我可以使用 ACL 表应用安全性(创建和/或检索和/或删除和/或更新和/或等)。我想知道是否可以像这样应用安全性:
userA SomeCarObject has permissions (create,read,update)
userB SomeCarObject has permissions (read)
roleA SomeCarObject has permissions (update)
roleB SomeCarObject has permissions (delete)
那么,用户和角色都可以对对象拥有不同的权限吗?
我们有三种不同的对象类型:汽车、动物、花卉。我们希望使用 ACL 来分配用户和角色,以便对这些对象类型中的每一个具有不同的权限。
这可以用 Spring Security 4 中的 ACL 来完成吗?你知道有什么好的例子吗?或者,我们是否必须拥有所有用户权限?所以如果我们的角色有 3 个用户,那么我们需要在 acl 表中有 3 个条目,每个用户一个?这就引出了一个问题……如果用户更改了角色,那么我们将不得不重新评估他们的权限,并且我们可能不得不在 ACL 表中添加或删除记录?
我也在研究权限是如何工作的。我们目前在旧系统中使用位掩码来跟踪权限,所以我们有 recursiveRead (1)、read (2)、write(4)、delete(8)、create(16)、upload(32)、 close(64) 等。似乎我们可以拥有 32 位权限,这对我们来说非常有用。
所以,我正在研究我们如何在 ACL 中定义这些权限。
当我获得更多信息时,我一定会在这里发布。谢谢!