如何通过Python LDAP获得比服务器的sizelimit更多的搜索结果?

Dav*_*rby 11 python ldap

我使用python LDAP模块(除其他外)搜索组,并运行到服务器的大小限制并获得SIZELIMIT_EXCEEDED异常.我尝试了同步和异步搜索,并且两种方式都遇到了问题.

您应该能够通过在搜索上设置分页控件来解决此问题,但根据python-ldap文档,尚未为search_ext实现控件.有没有办法在Python中执行此操作?如果python-ldap库不支持它,那么还有另一个Python库吗?

Chr*_*ard 16

以下是与python-ldap中的分页相关的一些链接.

  • 这些例子已经过时了.我正在使用Python 2.6和2.7与python-ldap> = 2.3.11,语法已经改变了一点.有关最新示例,请参阅https://bitbucket.org/jaraco/python-ldap/src/f208b6338a28/Demo/paged_search_ext_s.py. (6认同)

Dav*_*rby 8

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

页面控件由Python lDAP模块支持,但尚未更新search_ext的文档以显示该文档.在通过Gorgapor链接例子说明如何使用ldap.controls.SimplePagedResultsControl阅读页面的结果.

但是有一个问题.这适用于Microsoft Active Directory服务器,但不适用于OpenLDAP服务器(可能还有其他服务器,例如Sun的服务器).该LDAP控制RFC是模糊的,以分页控件是否应该被允许覆盖服务器的设置的sizeLimit.在ActiveDirectory服务器上,默认情况下,他们可以在OpenLDAP上使用,但我认为有一个服务器设置可以允许它们.

因此,即使您实现了分页控件,仍然无法保证它将获得您想要的所有对象.

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