我正在为我的一个 Java 应用程序设置 openLDAP。用户名和密码存储在 openLDAP 中,用户可以通过应用程序更新他们的密码(使用 javax.naming.directory API')。我将我们的用户从我们现有的 Sun Directory Server 导入到 openLDAP。导入成功,密码以 SSHA 格式加密。我注意到,当我从应用程序更新密码时,它会以“纯文本”格式存储它。当我通过 Apache Directory Studio 查看密码时,我可以取消隐藏密码。后来进行了很多谷歌搜索,我尝试在 slapd.conf 文件中设置“密码哈希 {SSHA}”,但这也对我没有帮助。我在windows环境下。我以纯文本格式将密码传递给 openLDAP。代码中没有进行加密。我知道我可以在应用程序中对其进行加密,但我更喜欢 openLDAP 为我做这件事。请让我知道我是否可以在 openLDAP 方面做任何事情。
这是我今天用来修改密码的 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);