0

一旦管理员设置了 Spring LDAP,我需要开发一个代码来更改用户密码。我使用 OpenDS 2.2 作为我的目录服务器。

每当我使用我的代码更改它时,它会将属性“pwdReset”设置为 true,这意味着需要更改密码。但再次更改密码不会将此属性重置为 false。我设法找到了一种解决方法,即通过 java 代码将“pwdReset”显式重置为 false,但这不能也不应该是正确的方法。

据我了解,这是一个操作属性,不应由用户修改,而要走的路是首先对用户进行身份验证,然后在用户仍然通过身份验证时更改密码。

这是我需要帮助的地方。如果有人能给我提供一个示例代码来实现我在上一段中提到的内容,我将不胜感激。

我目前使用的代码如下

     ModificationItem item = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new        BasicAttribute("userPassword", password));
             ldapTemplate.modifyAttributes("cn="+userName, new ModificationItem[]{item});
4

1 回答 1

0

OpenDS 中的密码重置(以及 OpenDJ 是 OpenDS 的积极开发的分支,请查看 opendj.forgerock.org),是一种操作,包括在以另一个用户身份验证时更改用户帐户的密码(通常为 cn=Directory Manager)。当经过身份验证的用户更改自己的密码时,这不是重置,而是更改(并不是说在使用 ProxiedAuthorization 控件时也是如此)。

在任何情况下,如果密码策略被定义为在重置密码时强制更改密码,则将设置 pwdReset 属性。如果您知道密码将始终由管理帐户更改,那么您不应在重置时强制更改密码。

亲切的问候,卢多维奇。

于 2012-05-31T19:12:41.843 回答