我正在使用OpenLDAP来存储用户信息。用户条目是一个inetOrgPerson对象。我使用Apache Directory Studio添加带有SSHA-512散列方法的userPassword。
如何在Java应用程序中使用LDAP中存储的密码验证输入的用户密码?
发布于 2013-08-02 01:47:19
我找到了我的答案: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中。它在您创建新用户或更新用户密码时非常有用。
您可以改进源代码,例如用org.apache.commons.codec.binary.Base64替换sun.misc.BASE64Encoder。
发布于 2013-07-28 08:57:43
只需尝试使用该用户名和密码进行绑定。LDAP服务器将执行检查。这适用于所有的LDAP实现,而不仅仅是OpenLDAP。
在JNDI中,“绑定”是指在环境中使用用户名和密码作为凭据构造InitialContext,或者在现有上下文的环境中更改这些内容后发出LdapContext.reconnect()。
发布于 2013-07-28 18:37:09
https://stackoverflow.com/questions/17877432
复制相似问题