如何使用Python LDAP获得比服务器的大小限制更多的搜索结果?

问题描述 投票:12回答:2

[我正在使用python-ldap模块来搜索组,并且正在遇到服务器的大小限制并获得SIZELIMIT_EXCEEDED异常。我已经尝试过同步和异步搜索,并且都通过两种方式都遇到了问题。

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

python ldap
2个回答

8
投票

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

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

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

因此,即使您实现了分页控件,也仍然无法保证它会获得所需的所有对象。 叹气

也分页控件仅在LDAP v3中可用,但我怀疑是否有许多v2服务器正在使用。

© www.soinside.com 2019 - 2024. All rights reserved.