spring security ldap隐藏密码属性
Posted
技术标签:
【中文标题】spring security ldap隐藏密码属性【英文标题】:spring security ldap hidden password attribute 【发布时间】:2017-09-25 09:24:24 【问题描述】:如果我的 ldap OU 的密码属性被隐藏了,会不会有问题?在 Spring Security 中我必须做一些额外的配置吗?如果我目前的 ldap 结构如下:
test cn密码属性是隐藏的,如何配置spring security做ldap认证?
目前我已将其配置为:
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception
auth
.ldapAuthentication()
.userDnPatterns(USER_DN_PATTERNS)
.groupSearchBase("ou=groups")
.contextSource(contextSource())
.passwordCompare()
.passwordEncoder(new LdapShaPasswordEncoder())
.passwordAttribute("UnicodePwd");
@Bean
public DefaultSpringSecurityContextSource contextSource()
DefaultSpringSecurityContextSource contextSource = new DefaultSpringSecurityContextSource(Arrays.asList(LDAP_URL), BASE_DN);
contextSource.setUserDn(USER_DN);
contextSource.setPassword(USER_PASSWORD);
return contextSource;
DN 如下:
private static final String USER_DN_PATTERNS = "OU=Usuarios";
private static final String BASE_DN = "dc=mutualser," + "dc=org";
但是当我尝试进行身份验证时,我得到一个 NO_ATTRIBUTE_OR_VAL 错误(我确定这是密码属性的名称)
【问题讨论】:
【参考方案1】:如果未指定密码,Spring security 将假定密码为 unicodePwd。
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception
auth
.ldapAuthentication()
.userSearchFilter("(sAMAccountName=0)")
.groupSearchBase("ou=Mutual Ser")
.contextSource(contextSource());
验证就好了
【讨论】:
以上是关于spring security ldap隐藏密码属性的主要内容,如果未能解决你的问题,请参考以下文章
登录表单用户凭据而不是 LDAP Spring Security 中的硬编码 UserDn 和密码
Spring Security Ldap验证userDn和登录表单中的密码
Spring 3,Spring Security,LDAP,如何向 LDAP 添加角色?