【问题标题】:spring security ldap hidden password attributespring security ldap隐藏密码属性
【发布时间】: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 错误(我确定这是密码属性的名称)

【问题讨论】:

    标签: java spring spring-security ldap


    【解决方案1】:

    如果未指定密码,Spring security 将假定密码为 un​​icodePwd。

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .ldapAuthentication()
                .userSearchFilter("(sAMAccountName={0})")
                .groupSearchBase("ou=Mutual Ser")
                .contextSource(contextSource());
    }
    

    验证就好了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-08
      • 2012-03-28
      • 2016-09-21
      • 1970-01-01
      • 2014-09-13
      • 2013-10-02
      • 1970-01-01
      • 2011-08-18
      相关资源
      最近更新 更多