You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用IPWorks的LDAP Delphi组件设置Active Directory用户密码失败求助

使用IPWorks的LDAP Delphi组件设置Active Directory用户密码失败求助

我来帮你分析下这个问题,你遇到的情况在AD通过LDAP修改密码时很常见,咱们一步步拆解解决:

首先说下你用userPassword属性的情况:Active Directory实际上并不使用这个属性来存储用户的登录密码,它更多是为了兼容其他非微软LDAP系统保留的字段,所以你之前的操作虽然没有报错,但根本没修改到AD用于身份验证的密码,这就是为什么你无法登录的原因。

接下来重点解决unicodePwd报的53 - WILL_NOT_PERFORM错误,这个错误几乎都是因为AD对修改unicodePwd有严格的要求,常见原因和解决方法如下:

核心要求与修正方案

1. 必须使用加密连接

AD规定修改unicodePwd必须通过LDAPS(SSL加密,默认端口636)或者启动TLS加密的LDAP连接,明文LDAP(389端口)是不允许修改这个属性的,这是最常见的触发该错误的原因。

2. 密码字节格式必须正确

unicodePwd的字节数组有严格格式要求:

  • 密码字符串必须用双引号包裹(比如你的密码xyz@12345678要变成"xyz@12345678")
  • 然后将包裹后的字符串转换成UTF-16LE编码(Delphi里的TEncoding.Unicode就是UTF-16LE,刚好符合要求)

3. 操作账号必须有足够权限

执行修改的账号需要拥有AD中“重置密码”或“修改密码”的权限,普通用户默认只能修改自己的密码,如果你用的是普通账号,可能会触发权限问题。

4. 密码必须符合AD的密码策略

你的密码需要满足AD设置的密码复杂度要求(比如长度、包含大小写字母/数字/特殊字符、不能和历史密码重复等),不符合的话也可能触发类似错误。

修正后的代码示例

结合以上要求,调整你的代码如下:

procedure TForm1.Button1Click(Sender: TObject);
var
  WrappedPassword: string;
  PasswordBytes: TBytes;
begin
  // 第一步:配置加密连接(LDAPS)
  ipwLDAP.Port := 636;
  ipwLDAP.SSL := True;

  // 先确保已经绑定到有权限的AD账号(比如管理员账号)
  // 示例绑定代码(根据你的实际账号信息修改):
  // ipwLDAP.Bind('CN=你的管理员账号,DC=AD,DC=INTERNAL', '管理员密码');

  ipwLDAP.DN := 'CN=Test Delphi,OU=ERP,OU=Users and Groups,DC=AD,DC=INTERNAL';

  ipwLDAP.AttrCount := 1;
  ipwLDAP.AttrType[0] := 'unicodePwd';
  
  // 关键:用双引号包裹密码,再转成UTF-16LE字节
  WrappedPassword := '"xyz@12345678"';
  PasswordBytes := TEncoding.Unicode.GetBytes(WrappedPassword);
  ipwLDAP.AttrValueB[0] := PasswordBytes;
  
  ipwLDAP.AttrModOp[0] := amoReplace;

  try
    ipwLDAP.Modify;
    ShowMessage('密码设置成功!');
  except
    on E: Exception do
      ShowMessage('操作失败:' + E.Message + #13#10 + 'AD返回描述:' + ipwLDAP.ResultDescription);
  end;
end;

额外排查点

  • 如果不想用LDAPS端口636,也可以先通过明文389端口连接,然后调用ipwLDAP.StartTLS()启用加密,再执行Modify操作。
  • 确认你的AD服务器已经配置好SSL证书,否则LDAPS连接可能失败。

备注:内容来源于stack exchange,提问作者Ricardo Pascoal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:27:57