使用LDAP.TS创建AD用户后如何启用?遇WILL_NOT_PERFORM错误求助
解决AD用户创建时设置userAccountControl报错的问题
针对你遇到的0000052D: SvcErr: DSID-031A12D2, problem 5003 (WILL_NOT_PERFORM), data 0错误,以下是排查和解决的核心要点:
必须使用加密LDAP连接
Active Directory默认要求设置userPassword(或unicodePwd)时通过加密通道传输,普通LDAP(389端口)明文传输会被直接拒绝。确保你的ldap.ts配置使用LDAPS(636端口)或启用STARTTLS加密。修正userAccountControl的类型
你代码里的userAccountControl: \66048`是字符串类型,但AD要求该属性为数值型。改成userAccountControl: 66048(直接用数字,不要加引号或模板字符串),这个值对应NORMAL_ACCOUNT(512) + DONT_EXPIRE_PASSWORD(65536)`,是启用账户且密码永不过期的正确配置。移除不必要的系统属性
创建用户时无需手动指定distinguishedName和instanceType:distinguishedName会由AD根据你创建用户的OU路径自动生成,手动设置可能引发冲突;instanceType是AD自动维护的系统属性,不需要手动写入。
把这两个字段从用户对象中删除即可。
确认密码符合域策略
检查你设置的userPassword是否满足AD域的密码规则(长度、复杂度、历史要求等),密码不符合策略也会触发这个错误。验证绑定账户权限
确保你用来连接AD的绑定账户,在目标OU(OU=USUARIOS,OU=TECVERDE,DC=tecverde,DC=local)上拥有以下权限:- 创建用户对象
- 写入
userAccountControl属性 - 写入
unicodePwd(或userPassword)属性
修改后的示例代码:
const user = { accountExpires: '9223372036854775807', cn: 'Francine Vidal De Souza', company: 'Tecverde', department: 'Diretoria Administrativo Financeira', description: '55. Diretoria Administrativo Financeira', displayName: 'Francine Vidal De Souza', givenName: 'Francine Vidal', mail: 'francine.vidal@tecverde.com.br', manager: 'CN=Ronaldo Passeri,OU=USUARIOS,OU=TECVERDE,DC=tecverde,DC=local', name: 'Francine Vidal De Souza', objectClass: ['top', 'person', 'organizationalPerson', 'user'], physicalDeliveryOfficeName: 'Diretoria Administrativo Financeira', sn: 'De Souza', title: 'Cfo', userPrincipalName: 'francine.vidal@tecverde.local', sAMAccountName: 'francine.vidal', userPassword: '符合策略的密码', // 替换为符合域密码规则的密码 userAccountControl: 66048, objectCategory: 'CN=Person,CN=Schema,CN=Configuration,DC=tecverde,DC=local' }
内容的提问来源于stack exchange,提问作者Gil Ribeiro
相关产品推荐
相关产品推荐

