【问题标题】:LDAP Template Authenticate Returning false with correct passwordLDAP 模板验证返回 false 和正确的密码
【发布时间】:2019-07-16 19:13:51
【问题描述】:

我正在使用 LdapTemplate 来使用 LDAP 身份验证,我能够成功地在文件系统中找到用户,但身份验证方法返回 false 并认为我的密码错误。

我已经调试过了,它成功找到了它找到匹配但密码不匹配的对象。

dn: dc=obssjobs,dc=com
objectclass: top
objectclass: domain
objectclass: extensibleObject
dc: obssjobs

# Organizational Units
dn: ou=groups,dc=obssjobs,dc=com
objectclass: top
objectclass: organizationalUnit
ou: groups

dn: ou=people,dc=obssjobs,dc=com
objectclass: top
objectclass: organizationalUnit
ou: people

# Create People
dn: uid=john,ou=people,dc=obssjobs,dc=com
objectclass: top
objectclass: hrexpert
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: John Doe
sn: John
uid: john
password: secret

dn: uid=jihn,ou=people,dc=obssjobs,dc=com
objectclass: top
objectclass: hrexpert
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Jihn Die
sn: Jihn
uid: jihn
password: secret

dn: uid=jahn,ou=people,dc=obssjobs,dc=com
objectclass: top
objectclass: hrexpert
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Jahn Dae
sn: Jahn
uid: jahn
password: 123

认证方式

public boolean authenticate(String username, String password) {
        AndFilter filter = new AndFilter();
        filter.and(new EqualsFilter("objectclass", "hrexpert")).and(new EqualsFilter("cn", username));
        return ldapTemplate.authenticate(DistinguishedName.EMPTY_PATH, filter.toString(), password);
    }

这是我在 main 中的测试,记录为“false”

@PostConstruct
    public void setup(){
        boolean authenticated=hrExpertService.authenticate("Jahn Dae", "123");
        log.info("authenticated: " + authenticated);
    }

【问题讨论】:

    标签: java spring ldap spring-ldap


    【解决方案1】:

    请尝试以下代码。为我工作:

        import com.novell.ldap.LDAPConnection;  //Import this 
    
       private LDAPConnection lc  = null;  
       private LDAPSocketFactory ssf; // If using secure ldap
    
    
      try {
    
                if(usingSecureldap){
                    prepEnv(getSsl_keystore_url, getSsl_keystore_pass);
    
                    if(ssf==null){
                        ssf = new LDAPJSSESecureSocketFactory();
                    }
    
                    lc = new LDAPConnection(ssf);
    
                }else{  // If not using secure ldap
    
                    lc = new LDAPConnection();
                }
    
    
    
                lc.connect( <Ldap_ip>, <Ldap_port> );
                lc.bind( LDAPConnection.LDAP_V3, <username>+suffix, <password>.getBytes("UTF8") );
    
                return Boolean.TRUE;
            }
    catch (LDAPException e) {return Boolean.FALSE;}
    
    
    private void prepEnv(String keystorePath, String keystorePass) {
            System.setProperty(TRUSTSTORE_PROP_KEY, keystorePath);
            System.setProperty(PWD_TRUSTSTORE_PROP_KEY, keystorePass);
        }
    

    【讨论】:

    • 我不想改变我的项目的骨架
    猜你喜欢
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 2020-07-24
    • 1970-01-01
    相关资源
    最近更新 更多