我正在为我的一个Java应用程序设置openLDAP。用户名和密码存储在openLDAP中,用户可以通过应用程序更新密码(使用javax.naming.directory API)。我将我们的用户从现有的Sun Directory Server导入到openLDAP中。导入成功,密码以SSHA格式加密。我注意到,当我从应用程序更新密码时,它以“纯文本”格式存储它。当我通过Apache Directory Studio查看密码时,我可以取消隐藏密码。大量的搜索后,我试图在slapd.conf文件中设置“密码哈希{SSHA}”,并没有帮助我。我在一个Windows环境。我传递密码以纯文本格式打开LDAP。代码中没有加密。我知道我可以在应用程序中加密它,但我更愿意使用openLDAP来为我做。请让我知道我是否可以在openLDAP方面做任何事情。OpenLDAP - 将userPassword另存为PlainText
这是我今天用来修改密码的JAVA代码。过去7年来,这在我们现有的环境中运行良好。
ModificationItem[] newAttribs = new ModificationItem[1];
Attribute passwordAttrib = new BasicAttribute(DirectoryConstants.USER_PASSWORD, password);
ModificationItem passwordItem = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, passwordAttrib);
newAttribs[0] = passwordItem;
.....
DirContext ctx = this.getContext();
ctx.modifyAttributes(DirectoryConstants.USER_UID + "=" + userId + "," + ou, newAttribs);
如果他使用密码策略覆盖,他还需要使用扩展密码修改操作。 – EJP 2013-12-04 00:31:35