【发布时间】:2020-04-27 10:14:03
【问题描述】:
我正在使用 spring ldapcontextsource + java 与 AD 交互。当我使用新密码创建用户帐户时,一切正常。代码如下
context.setAttributeValue("unicodePwd", AD.getUnicodePwd(persona.getPassword()));
但是,当我尝试使用上面相同的代码更新使用密码时,出现以下错误:
[LDAP: 错误代码 20 - 0000207E: AtrErr: DSID-031906FC, #1: 0: 0000207E: DSID-031906FC, 问题 1006 (ATT_OR_VALUE_EXISTS), 数据 0, Att 9005a (unicodePwd)];嵌套异常是 javax.naming.directory.AttributeInUseException: [LDAP: 错误代码 20 - 0000207E: AtrErr: DSID-031906FC, #1: 0: 0000207E: DSID-031906FC, 问题 1006 (ATT_OR_VALUE_EXISTS), 数据 0, Att 9005a (unicodePwd ) ];剩余名称 'CN=brian_2 brian_2,OU=Test Group,OU=Organization Users,OU=ICE Accounts,DC=vetasi,DC=stage'
此外,我尝试了以下代码。用户密码设置成功,但新密码无法登录,旧密码仍然有效
context.setAttributeValue("userPassword", persona.getPassword());
最后,我使用下面的代码来修改上下文
ldapTemplate.modifyAttributes(context);
【问题讨论】:
-
更新密码需要用到 // 执行更新 ctx.modifyAttributes(theUserName, mods);
-
@dassum 我更新了我的帖子。是的,我使用了 ldapTemplate.modifyAttributes(context);在最后。
标签: java ldap spring-ldap