MuleSoft LDAPS连接AD无法将userAccountControl设为512报错
问题背景
使用Mule 4 LDAP Connector通过636端口采用LDAPS协议连接Active Directory实现用户开通,SSL连接采用trustStore文件+密码的认证方式。按照公开的Active Directory规范设置了合规的userPassword属性后,执行操作抛出如下错误:
OPERATION_NOT_SUPPORTED: [LDAP: error code 53 - 0000052D: SvcErr: DSID-031A12E8, problem 5003 (WILL_NOT_PERFORM), data 0
操作过程中可成功将userAccountControl设置为546、544等数值,但始终无法设置为512。
复现所用配置
LDAP Add操作请求Payload
{ "accountExpires": "0", "givenName": "First", "name": "First Last", "displayName": "First Last", "cn": "First Last", "sn": "Last", "userAccountControl": "512", "userPassword": "s4mb@r89!DRFnw", "physicalDeliveryOfficeName": "London", "dn": "CN=First Last,OU=London,DC=company,DC=co,DC=uk", "distinguishedName": "CN=First Last,OU=London,DC=company,DC=co,DC=uk", "manager": "CN=Mgr Name,OU=London,DC=company,DC=co,DC=uk", "userPrincipalName": "First.Last@company.co.uk", "sAMAccountName": "First.Last", "employeeID": "First.Last", "objectCategory": "CN=Person,CN=Schema,CN=Configuration,DC=company,DC=co,DC=uk", "objectClass": ["top", "person", "organizationalPerson", "user"] }
Mule 4 LDAP Connector 配置
<ldap:config name="LDAP_Configuration" doc:name="LDAP Configuration" doc:id="dc616c25-140d-42ef-a72e-575379a81596" > <ldap:ssl-connection authDn="ldap_user" authPassword="password" url="ldaps://domain:636" trustStorePath="C:\path\src\main\resources\server.truststore" trustStorePassword="mulesoft" > <reconnection > <reconnect frequency="20000" count="2" /> </reconnection> </ldap:ssl-connection> </ldap:config>
错误根因
该错误和Mule LDAP Connector配置无关,是Active Directory的固有规则限制,具体触发逻辑如下:
- AD通过LDAPS接收
userPassword属性时,要求传入值必须是用双引号包裹明文密码后,按UTF-16LE编码生成的字节数组,直接传入普通明文字符串会被判定为密码格式非法。 - AD新建用户时存在强约束:如果密码不符合域密码策略、或密码格式非法,不允许直接创建启用状态(
userAccountControl=512)的账户,仅允许先创建禁用状态的账户。这也是设置userAccountControl为544(禁用、密码永不过期)、546(禁用、普通账户)时操作能成功的直接原因。
修复步骤
- 调整新建用户的Add请求参数:创建阶段将
userAccountControl设为546(禁用普通用户),不要直接传512,其余必填属性保持不变。 - 对密码值做格式转换:将明文密码首尾加双引号后,转为UTF-16LE编码的字节数组,作为
userPassword的传入值,禁止直接传入普通明文字符串。 - Add请求成功创建禁用用户后,单独发起一次LDAP Modify请求,将对应用户的
userAccountControl属性修改为512,即可完成启用状态用户的开通。
注:当前LDAPS连接配置完全正常,无需调整trustStore、端口、连接认证相关参数。如果SSL连接存在问题,所有LDAP操作都会失败,不可能成功创建
userAccountControl为544/546的用户。
内容的提问来源于stack exchange,提问作者Sambit Swain
相关产品推荐
相关产品推荐

