我们发现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的