【问题标题】:How to get more search results than the server's sizelimit with Python LDAP?如何使用 Python LDAP 获得比服务器的 sizelimit 更多的搜索结果?
【发布时间】:2020-05-16 09:12:58
【问题描述】:

我正在使用python-ldap 模块(除其他外)搜索组,并且遇到了服务器的大小限制并得到SIZELIMIT_EXCEEDED 异常。我已经尝试过同步和异步搜索,并以两种方式解决了问题。

您应该能够通过在搜索中设置分页控件来解决此问题,但根据 python-ldap 文档,这些控件尚未针对 search_ext() 实现。有没有办法在 Python 中做到这一点?如果python-ldap 库不支持,是否还有其他 Python 库支持?

【问题讨论】:

  • 我遇到了同样的问题。我需要使用 python 处理超过大小限制的结果。
  • 在紧要关头,使用根 dn 凭据绑定到 LDAP 服务器 - 与默认的匿名绑定相反 - 将绕过 SIZELIMIT_EXCEEDED 限制。但是,分页结果(或分页) - 如下所述 - 是从客户端和服务器的角度来看的方式。

标签: python ldap


【解决方案1】:

【讨论】:

【解决方案2】:

在对 python-ldap-dev 邮件列表进行了一些讨论之后,我可以回答我自己的问题。

Python lDAP 模块支持页面控件,但尚未更新文档以供 search_ext 显示。 example linked by Gorgapor 展示了如何使用 ldap.controls.SimplePagedResultsControl 读取页面中的结果。

但是有一个问题。这将适用于 Microsoft Active Directory 服务器,但不适用于 OpenLDAP 服务器(可能还有其他服务器,例如 Sun 的服务器)。 LDAP controls RFC 对于是否应允许分页控件覆盖服务器的 sizelimit 设置不明确。在 ActiveDirectory 服务器上,默认情况下它们可以,而在 OpenLDAP 上则不能,但我认为有一个服务器设置允许它们这样做。

所以即使你实现了分页控件,仍然不能保证它会得到你想要的所有对象。 叹息

分页控件也仅适用于 LDAP v3,但我怀疑有很多 v2 服务器在使用。

【讨论】:

  • 基于 python 的 ldap 浏览器 Luma 似乎以某种方式解决了这个限制。我一直试图通过它的源代码来弄清楚,但没有运气。另外,你能链接到你提到的 python-ldap-dev 线程吗?
  • 客户端请求的资源限制(例如时间限制和大小限制)永远不能覆盖服务器的资源限制。要确定支持哪些请求控件,请查询根 DSE(bit.ly/the-root-dse)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 2011-05-26
  • 2022-11-12
  • 2017-07-28
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多