我使用OpenLDAP存储用户信息。用户输入是inetOrgPerson对象。我使用Apache Directory Studio添加带有SSHA-512哈希方法的userPassword。
如何使用Java应用程序中存储在LDAP中的密码验证输入用户密码?
答案 0 :(得分:3)
我找到了答案:http://gurolerdogan.blogspot.com/2010/03/ssha-encryption-with-java.html
SSHA ssha = new SSHA("SHA-512");
String sshaStr = ssha.createDigest("randomString", "mypwd");
//{SSHA}5QxZCiM/zcn0/upHX2uw6ICbgE+PLa9sJz/UpfMAMe1isyxuv+NeW4k4GjRDoTQHnB5QjCKCydJJjUQnT3DEEXJhbmRvbVN0cmluZw==
return sshaStr;
将{SSHA}替换为{SSHA-512},您将拥有一个SSHA-512密码存储在OpenLDAP中。当您创建新用户或更新用户密码时,它非常有用。
您可以改进源代码,例如将sun.misc.BASE64Encoder替换为org.apache.commons.codec.binary.Base64。
答案 1 :(得分:1)
尝试使用该用户名和密码进行绑定。 LDAP服务器将执行检查。所有LDAP实现都是如此,而不仅仅是OpenLDAP。
在JNDI中,'bind'表示使用用户名和密码构建InitialContext作为环境中的凭据,或者在现有上下文的环境中更改这些内容后发出LdapContext.reconnect()。
答案 2 :(得分:1)