移动后,Active Directory LDAP_MATCHING_RULE_IN_CHAIN不会返回任何logging

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

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

我们有一个应用程序使用LDAP对AD进行身份validation,并使用Active Directory LDAP_MATCHING_RULE_IN_CHAIN进行查询,以支持embedded的组:

(memberOf:1.2.840.113556.1.4.1941:=CN=SystemAdministrators,OU=SA Users,OU=System Administrators,OU=Departments,DC=ds,DC=example,DC=com) 

一个示例查询将是:

 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 

它将按照预期返回属于所请求的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) 

例如:

 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 

我们没有从LDAPsearch中返回任何结果。

我们的第一个想法是“哦,这可能是caching的东西”。 但是我们把安全小组留在了新的OU中几个小时,我们仍然看到了相同的结果。

有没有人见过这样的事情? 有关下一个问题的任何build议?

search基地应该设置为用户所在的位置,而不是组的位置(组的位置已包含在选项中)。 所以,无论组是哪里,你的search基地应该保持相同(如果用户没有移动)。

什么权限。 应用程序是否有权在新的OU中search? 我会看看新老OU的有效权利。

另外,我会确认新位置实际上是一个OU。 可以在AD中创build“容器”对象,就像“用户”容器不是OU。 因此,DN将从:CN = SystemAdministrators,OU =系统pipe理,OU =安全组,DC = ds,DC =示例,DC = com到:CN = SystemAdministrators, CN =系统pipe理 ,OU =安全组,DC = DS,DC =例如,DC = com的