groovyldap,搜索仅返回5000个结果

groovyldap,搜索仅返回5000个结果,groovy,ldap,Groovy,Ldap,我正在使用groovyldap进行LDAP搜索,搜索返回我要查找的组,但只返回该组的5000个成员: def getGroupMembers() { def ldap = LDAP.newInstance(connectionInformation.hostname, connectionInformation.user, connectionInformation.password) def result = connection.search("CN=mygroup", "O

我正在使用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代码中找不到任何允许返回所有成员的设置,但认为我应该能够获取所有结果似乎是合乎逻辑的。

我有两个可能的答案。(对不起,我已经有一段时间没有玩LDAP/ActiveDirectory了)

  • 您可能达到了广告页面大小限制,这里最简单的方法是在ldap查询中实现分页 在groovyldap中如何准确地做到这一点(不幸的是,对于读者来说是一个练习,但我已经用NodeDap完成了。我认为它会发出一个
    页面
    事件(?)我已经有一段时间没有这样做了

  • 您可能有一个范围查询。我对这些不太了解,但在中有一些想法

  • Microsoft Active Directory实现是使用queryPolicy类的对象实现的

    显示在检索条目的多值属性时返回的值数

    在MicrosoftActiveDirectory2008中(我假设稍后的版本中,这是硬编码的,虽然可以修改,但并不有效)


    如果一个属性的值超过了MaxValRange值指定的值的数量,则可以从LDAP中使用“Control”来检索超过MaxValRange值的值。

    这似乎正是发生的情况。解决方案似乎相当复杂,我还没有弄清楚如何在Groovy/Grails中实现这一点。