groovyldap,搜索仅返回5000结果

时间:2018-02-14 13:43:59

标签: groovy ldap

我正在使用groovyldap进行LDAP搜索,搜索返回我正在寻找的组,但只返回该组的5000名成员:

def getGroupMembers() {
    def ldap = LDAP.newInstance(connectionInformation.hostname, connectionInformation.user, connectionInformation.password)
    def result = connection.search("CN=mygroup", "OU=foo,DC=bar,DC=blech", SearchScope.SUB)
    def members = result["member;range=0-4999"]
    members = members[0]
}

是的,实际上返回的字段为“member; range = 0-4999”,而“members”数组中有5000个元素。我在LDAP代码中找不到任何设置来启用返回所有成员,但认为我应该能够获取所有结果似乎是合乎逻辑的。

2 个答案:

答案 0 :(得分:1)

Microsoft Active Directory实现LDAP policies是使用queryPolicy类的对象实现的。

出现您遇到的那个是MaxValRange,它是检索条目的多值属性时返回的值的数量。

在Microsoft Active Directory 2008中(我稍后假设,这是硬编码的,虽然它可以修改,但它没有效果。)

如果属性的数量超过MaxValRange值指定的值数,则可以使用LDAP_SERVER_RANGE_OPTION_OID“Control”来检索超过MaxValRange值的值。

答案 1 :(得分:0)

我有两个可能的答案。 (对不起,自从我使用LDAP / ActiveDirectory以来已经有一段时间了。)

  1. 您可能正在达到AD页面大小限制。 Learn more about page size limits,这里最简单的方法是在ldap查询中实现分页。
  2. 在groovyldap中如何做到这一点(不幸的是,这是读者的练习,但我已经用nodeldap完成了。我认为它会发出page事件(?)因为我已经有一段时间了这样做了。

    1. 您可能有范围查询。我对这些知之甚少,但在another StackOverflow Answer中有一些想法。