Active Directory LDAP_MATCHING_RULE_IN_CHAIN 在 OU 移动后不返回任何记录

Mar*_*son 5 active-directory ldap

我们发现 Active Directory LDAP 查询存在一个奇怪的问题。

情况是:我们在给定的 OU 中有一个安全组。该安全组需要移动到一个完全不同的OU。

我们有一个使用 LDAP 对 AD 进行身份验证的应用程序,它使用 Active Directory LDAP_MATCHING_RULE_IN_CHAIN 进行查询,以便它支持嵌入式组:

(memberOf:1.2.840.113556.1.4.1941:=CN=SystemAdministrators,OU=SA Users,OU=System Administrators,OU=Departments,DC=ds,DC=example,DC=com)
Run Code Online (Sandbox Code Playgroud)

一个示例查询是:

ldapsearch -LLL -x -W -H 'ldap://ny-dc02.ds.example.com:389' -D '[binding account details]' -b 'OU=Departments,DC=ds,DC=example,DC=com' '(memberOf:1.2.840.113556.1.4.1941:=CN=SystemAdministrators,OU=SA Users,OU=System Administrators,OU=Departments,DC=ds,DC=example,DC=com)' dn
Run Code Online (Sandbox Code Playgroud)

它返回属于所请求 OU 的完整用户列表 - 正如预期的那样。

但是,如果我们将该组移出Departments\System Administrators和移入Security Groups\System Administration(并适当地更新查询):

(memberOf:1.2.840.113556.1.4.1941:=CN=SystemAdministrators,OU=System Administration,OU=Security Groups,DC=ds,DC=example,DC=com)
Run Code Online (Sandbox Code Playgroud)

例如:

ldapsearch -LLL -x -W -H 'ldap://ny-dc02.ds.example.com:389' -D '[binding account details]' -b 'OU=Security Groups,DC=ds,DC=example,DC=com' '(memberOf:1.2.840.113556.1.4.1941:=CN=SystemAdministrators,OU=System Administration,OU=Security Groups,DC=ds,DC=example,DC=com)' dn
Run Code Online (Sandbox Code Playgroud)

我们根本没有从 LDAP 搜索中得到任何结果。

我们的第一个想法是“哦,它可能正在缓存某些东西”。但是我们将安全组留在其新 OU 中几个小时,我们仍然看到相同的结果。

有没有人见过这样的事情?关于下一步在哪里进行故障排除的任何建议?

str*_*ine 5

搜索库应该设置为用户所在的位置,而不是组所在的位置(组的位置已包含在选项中)。因此,无论组在哪里,您的搜索基础都应保持不变(如果用户未移动)。