我正在使用OpenLDAP来存储用户信息 . 用户输入是inetOrgPerson对象 . 我使用Apache Directory Studio添加带有SSHA-512哈希方法的userPassword .
如何在Java应用程序中使用存储在LDAP中的密码验证输入用户密码?
我找到了答案: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-512密码存储在OpenLDAP中 . 在创建新用户或更新用户密码时,它很有用 .
您可以改进源代码,例如用org.apache.commons.codec.binary.Base64替换sun.misc.BASE64Encoder .
只是尝试使用该用户名和密码进行绑定 . LDAP服务器将执行检查 . 所有LDAP实现都是如此,而不仅仅是OpenLDAP .
在JNDI中,'bind'表示使用用户名和密码构造InitialContext作为环境中的凭据,或者在现有上下文的环境中更改这些内容后发出LdapContext.reconnect() .
考虑不向目录服务器提供预编码的密码 - 这可以防止服务器检查密码质量和管理密码历史记录 . 使用安全连接以明文形式传输密码 . 将服务器配置为仅接受安全连接或拒绝非安全连接上的StartTLS以外的操作 .
LDAP BIND操作用于更改连接的授权状态 . LDAP客户端将BIND请求发送到服务器,然后服务器将提供的凭证与用户条目中的凭证存储进行匹配,如果成功,则更改连接的授权状态 .
使用UnboundID LDAP SDK读取example .
3 回答
我找到了答案:http://gurolerdogan.blogspot.com/2010/03/ssha-encryption-with-java.html
将替换为,您将拥有一个SSHA-512密码存储在OpenLDAP中 . 在创建新用户或更新用户密码时,它很有用 .
您可以改进源代码,例如用org.apache.commons.codec.binary.Base64替换sun.misc.BASE64Encoder .
只是尝试使用该用户名和密码进行绑定 . LDAP服务器将执行检查 . 所有LDAP实现都是如此,而不仅仅是OpenLDAP .
在JNDI中,'bind'表示使用用户名和密码构造InitialContext作为环境中的凭据,或者在现有上下文的环境中更改这些内容后发出LdapContext.reconnect() .
考虑不向目录服务器提供预编码的密码 - 这可以防止服务器检查密码质量和管理密码历史记录 . 使用安全连接以明文形式传输密码 . 将服务器配置为仅接受安全连接或拒绝非安全连接上的StartTLS以外的操作 .
LDAP BIND操作用于更改连接的授权状态 . LDAP客户端将BIND请求发送到服务器,然后服务器将提供的凭证与用户条目中的凭证存储进行匹配,如果成功,则更改连接的授权状态 .
使用UnboundID LDAP SDK读取example .