Active directory 如何使用LDAP查询大型安全组?

Active directory 如何使用LDAP查询大型安全组?,active-directory,ldap,python-ldap,Active Directory,Ldap,Python Ldap,LDAP库:python LDAP 我正在尝试查询一个拥有大约1000个用户的安全组,以获得成员列表。 这些是我用来查询安全组的搜索首选项 Filter: (&(objectCategory=Group)(distinguishedName=cn=SomeGroup,dc=foo,dc=bar)) base dn: cn=SomeGroup,dc=foo,dc=bar attributes: ['member'] 我知道这个查询适用于较小的组,因为我已经对它进行了测试,并收到了它包含的

LDAP库:python LDAP

我正在尝试查询一个拥有大约1000个用户的安全组,以获得成员列表。 这些是我用来查询安全组的搜索首选项

Filter: (&(objectCategory=Group)(distinguishedName=cn=SomeGroup,dc=foo,dc=bar))
base dn: cn=SomeGroup,dc=foo,dc=bar
attributes: ['member']
我知道这个查询适用于较小的组,因为我已经对它进行了测试,并收到了它包含的成员列表

我也尝试过实现分页组搜索,但它不会返回有效负载中的任何内容,而是返回一条空的错误消息。我的分页大小是1,因此使用分页获得太多用户应该不是问题。我已经在organizationalUnits(OU)上测试了我的分页搜索,所以我知道它的实现是正确的


如果您有任何帮助或建议,我们将不胜感激。

要获取特定组的成员列表,您应该使用
memberof
搜索筛选器:

过滤器:(&(memberof=cn=SomeGroup,dc=foo,dc=bar))
属性:您想知道的关于成员的任何信息
基本DN:我建议将其设置为您的目录根(dc=foo,dc=bar),以确保您获得完整的成员列表


如果要以相反的方式执行(从组中读取成员的可分辨名称),则应使用虚拟筛选器
(objectclass=*)
执行
读取
操作,并将基本DN设置为组的可分辨名称,并请求
成员
属性。

是否查看超时?是的,我得到的错误是超时错误。我的超时值足够高,应该可以完成查询。您是否使用ldapsearch或cURL进行了测试,以便查看问题是出在客户端库还是服务器上?实际上,我正在使用您建议的后一种方法。因为这避免了我必须扫描AD中包含的所有用户。我尝试了虚拟筛选器,但对于尝试前一种方法(memberof属性)的任何人来说,这并没有改变任何东西:LDAP特性:用户的“primaryGroup”未列在的成员中。因此,您确实需要两个不同的查询,并将它们“联合”在一起,以确保获得所有成员(&(objectCategory=person)(objectClass=user)(primaryGroupID='+l_primaryGroupToken,其中您可以通过另一次搜索确定l_primaryGroupToken。如果它可能会帮助其他人,因为我为此苦苦挣扎了很长一段时间……使用Active Directory,您需要始终使用DifferentizedName来获取具有给定成员身份的用户(memberOf=)有了这样一个搜索过滤器…我最终找到了这样一个问答:。它不能像上面的过滤器示例中指定的那样,只与CN或组一起工作。