spring security使用Windows AD进行身份验证,使用Spring Security ACL进行授权

时间:2014-02-09 04:07:22

标签: spring-security acl

Spring安全大师,

我是春天安全的新手,所以如果我的问题不明确,请耐心等待。

我正在尝试使用spring security 3.x实现基于角色的访问控制。单个用户在没有组的情况下存储在Windows AD中,因此我们无法简单地将组映射到权限,如某些示例所示。

所以我的计划是仅使用Windows AD进行身份验证,但用户< - >角色关系由Spring安全本身维护。

但是,将单个用户映射到角色会非常繁琐,所以我的问题是如果可能的话配置用户< - >组< - > Spring安全性中的角色,但身份验证部分必须由Windows AD完成?

由于弹簧安全性非常灵活,我相信我的要求是可以实现的。有人可以给我一些关于我应该看的地方的指示吗?

对于像我这样的新手来说,越多细节越好:=)

提前谢谢。

Aaron Li


编辑1 :要特别添加我的问题,我可以利用Spring数据库表权限,组,group_authorities,group_members来实现基于角色的简单authroization逻辑吗?但是我不能使用“用户”表作为更早的解释,用户详细信息必须存储在Windows AD中,因此需要使用Windows AD对用户进行身份验证。

有任何建议吗?

由于

亚伦

1 个答案:

答案 0 :(得分:0)

首先澄清术语:权限,通常由Spring Security中的角色组成,是应用程序范围的权限。另一方面, ACL (访问控制列表)指定对特定域对象的权限。就像你了解差异一样。 AD通常包含权限/角色,但不包含ACL。

如果您不想使用AD中的权限,您可以自己实施UserDetailsContextMapper并将其注入ActiveDirectoryLdapAuthenticationProvider的实例中。请参阅Spring Security reference documentation如何指定自定义身份验证提供程序。

如果要使用参考模式的表(权限等),可以使用JdbcDaoImpl加载用户详细信息。然后,您必须在users表中插入用户,而不是任何密码,因为身份验证是通过AD完成的。但是,如果要删除users表,则必须自定义实现。