我正在尝试通过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编码,这就是为什么我能够成功修改密码
希望尽快得到答复。
谢谢, 安东尼
答案 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/