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

Java 如何通过LDAP在AD中启用用户?,java,active-directory,ldap,Java,Active Directory,Ldap,我试图通过Java/LDAP程序在AD中创建一个用户,而被创建的用户总是被禁用的。当我试图将“userAccountControl”设置为“512”时,它给出了以下错误: javax.naming.OperationNotSupportedException:[LDAP:错误代码53-0000052D:SvcErr:DSID-031A0FBC,问题5003(将不执行),数据0 1) 我不认为这是SSL的问题,因为我能够通过SSL端口成功连接并执行其他操作,如修改密码等 2) 我也在做UTF-16

我试图通过Java/LDAP程序在AD中创建一个用户,而被创建的用户总是被禁用的。当我试图将“userAccountControl”设置为“512”时,它给出了以下错误:

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

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

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

希望能尽快得到回复

谢谢, antony

您得到的错误(
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连接),然后设置PASSWD_NOTREQD标志(32)在userAccountControl中。

当我看到此问题时,结果表明我的编码不太正确。编码前需要将字符串密码括在引号中:

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

参考资料:

可能重复-能否显示您的代码?如果创建的帐户没有密码,它将被自动禁用。在设置密码或修改userAccountControl以便不需要密码之前,您无法启用该帐户。代码将很有用,但通常这是因为用户没有密码密码。感谢您的建议。我在创建用户时也在设置密码。以下是代码: