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对用户进行身份验证。
有任何建议吗?
由于
亚伦
答案 0 :(得分:0)
首先澄清术语:权限,通常由Spring Security中的角色组成,是应用程序范围的权限。另一方面, ACL (访问控制列表)指定对特定域对象的权限。就像你了解差异一样。 AD通常包含权限/角色,但不包含ACL。
如果您不想使用AD中的权限,您可以自己实施UserDetailsContextMapper
并将其注入ActiveDirectoryLdapAuthenticationProvider
的实例中。请参阅Spring Security reference documentation如何指定自定义身份验证提供程序。
如果要使用参考模式的表(权限等),可以使用JdbcDaoImpl
加载用户详细信息。然后,您必须在users表中插入用户,而不是任何密码,因为身份验证是通过AD完成的。但是,如果要删除users表,则必须自定义实现。