使用Spring Security从LDAP加载组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Spring Security从LDAP加载组相关的知识,希望对你有一定的参考价值。
我需要在LDAP中授予属于组(ABCD)的用户的访问权限。我能够使用Spring LDAP安全性成功进行身份验证,但由于某种原因,未加载组成员身份。我尝试登录时收到“403 access Denied”错误。我确认用户的组不会填充到权限中。
SecurityContextHolder.getContext().getAuthentication().getAuthorities();
有没有办法可以将用户组加载到权限中?这是我的spring安全配置。
<security:http auto-config="true" use-expressions="true">
<security:intercept-url pattern="/js/**"
access="true" />
<security:intercept-url pattern="/css/**"
access="true" />
<security:intercept-url pattern="/images/**"
access="true" />
<security:intercept-url pattern="/**"
access="hasRole('ABCD')" />
</security:http>
<security:ldap-server id="ldapServer" url="${ldap.url}" />
<security:authentication-manager alias="authenticationManager">
<security:ldap-authentication-provider
server-ref="ldapServer" user-dn-pattern="uid={0},ou=people,o=xxxx.com"
group-search-base="ou=groups,o=xxxx.com" />
</security:authentication-manager>
答案
应该是这样的:
<security:ldap-server id="ldapServer" url="${ldap.url}/o=xxxx.com" />
<security:authentication-manager alias="authenticationManager">
group-search-filter="member={0}"
group-search-base="ou=groups"
user-search-base="ou=people"
user-search-filter="uid={0}"
</security:authentication-manager>
主要问题是围绕group-search-filter
,它应该包含来自attribute
的一些user
(带占位符),它指的是当前用户是其成员的组。
以上是关于使用Spring Security从LDAP加载组的主要内容,如果未能解决你的问题,请参考以下文章
Grails:有条件地加载 Spring Security LDAP 插件
Spring Security Ldap,只登录指定组中的用户
Spring LdapAuthentication 和从本地数据库加载角色
如何将 Spring Security 从 ldap 更改为 ldap starttls