2016-10-07 114 views
0

我已经使用ldap实现了Spring安全,并且它在ldif文件中使用纯文本密码时工作正常,但是当我在ldap文件中使用散列{SHA}密码时,它会引发我“未授权”如何在ldap文件中实现编码(SHA)密码ldap

代码:

 AndFilter filter = new AndFilter(); 
    filter.and(new EqualsFilter("objectclass", "person")).and(
     new EqualsFilter("uid", authentication.getPrincipal() 
     .toString())); 

    boolean authenticatedUser = ldapTemplate.authenticate(<DN>, filter.encode(),<password>); 

test.ldif:

dn: uid=test ,ou=people,dc=springframework,dc=org 
    objectclass: top 
    objectclass: person 
    objectclass: organizationalPerson 
    objectclass: inetOrgPerson 
    cn: Rod Johnson 
    sn: Johnson 
    uid: test 
    userPassword: {SHA}a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 

什么是落实ldapTemplate.authenticate正确的方法是什么?

回答

0

LDAP目录服务器通常会对用户密码进行哈希以防止某人发现它们。服务器如何处理导入或添加明文密码或散列密码是特定于服务器的。如果这是样本数据,则以明文形式存在。如果要使用已经散列的密码导入现有用户数据,则应检查所用算法是否受所选Directory Server的支持,以及服务器的表示方式。