如何通过LDAP在AD中启用用户?

时间:2011-09-16 00:05:15

标签: java active-directory ldap

我正在尝试通过Java / LDAP程序在AD中创建用户,并且始终禁用正在创建的用户。当我尝试设置'userAccountControl't0'512'时,它给出了以下错误:

javax.naming.OperationNotSupportedException:[LDAP:错误代码53 - 0000052D:SvcErr:DSID-031A0FBC,问题5003(WILL_NOT_PERFORM),数据0

1)我不认为这是SSL的问题,因为我能够通过SSL端口成功连接并执行其他操作,如修改密码等。

2)我也在进行UTF-16编码,这就是为什么我能够成功修改密码

希望尽快得到答复。

谢谢, 安东尼

2 个答案:

答案 0 :(得分:2)

您获得的错误(0000052D)对应于来自winerror.h的以下错误消息:

//
// MessageId: ERROR_PASSWORD_RESTRICTION
//
// MessageText:
//
//  Unable to update the password. The value provided for the new
//  password does not meet the length, complexity, or history
//  requirement of the domain.
//
#define ERROR_PASSWORD_RESTRICTION       1325L

由此我们可以得出结论:您的AD具有密码策略集,这阻止了用户的创建。您可以在此处选择 - 首先尝试通过LDAP设置密码(这需要128位SSL或TLS连接),然后在userAccountControl中设置PASSWD_NOTREQD标志(32)。

答案 1 :(得分:0)

当我看到这个问题时,结果证明我的编码不太合适。您需要在编码之前将字符串密码包装在引号中:

final byte[] adEncodedPassword = ("\"" + password + "\"").getBytes("UTF-16LE");

参考:http://encounteringidm.com/will_not_perform-error-from-ad-on-password-change-using-java/