首页 文章

使用SSHA-512哈希方法验证LDAP用户密码

提问于
浏览
2

我正在使用OpenLDAP来存储用户信息 . 用户输入是inetOrgPerson对象 . 我使用Apache Directory Studio添加带有SSHA-512哈希方法的userPassword .

如何在Java应用程序中使用存储在LDAP中的密码验证输入用户密码?

3 回答

  • 1

    我找到了答案: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 .

  • 3

    只是尝试使用该用户名和密码进行绑定 . LDAP服务器将执行检查 . 所有LDAP实现都是如此,而不仅仅是OpenLDAP .

    在JNDI中,'bind'表示使用用户名和密码构造InitialContext作为环境中的凭据,或者在现有上下文的环境中更改这些内容后发出LdapContext.reconnect() .

  • 1
    • 考虑不向目录服务器提供预编码的密码 - 这可以防止服务器检查密码质量和管理密码历史记录 . 使用安全连接以明文形式传输密码 . 将服务器配置为仅接受安全连接或拒绝非安全连接上的StartTLS以外的操作 .

    • LDAP BIND操作用于更改连接的授权状态 . LDAP客户端将BIND请求发送到服务器,然后服务器将提供的凭证与用户条目中的凭证存储进行匹配,如果成功,则更改连接的授权状态 .

    使用UnboundID LDAP SDK读取example .

相关问题