【问题标题】:How to enable a user in AD via LDAP?如何通过 LDAP 启用 AD 中的用户?
【发布时间】:2011-09-16 00:05:14
【问题描述】:

我正在尝试通过 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 编码,这就是为什么我能够成功修改密码

希望尽快得到答复。

谢谢, 安东尼

【问题讨论】:

  • 请出示您的代码
  • 如果创建一个没有密码的帐户,它将被自动禁用。在设置密码或修改 userAccountControl 以便不需要密码之前,您无法启用该帐户。
  • 代码会很有用,但通常这是因为用户没有密码。
  • 感谢您的建议。我也在创建用户时设置密码。这是代码:

标签: java active-directory ldap


【解决方案1】:

您收到的错误 (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)。

【讨论】:

    【解决方案2】:

    当我看到这个问题时,发现我的编码不太正确。您需要在编码之前将字符串密码用引号引起来:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多