我认为我的一个 LDAP 客户端在 OpenLDAP 中达到了分页限制。客户端看到的具体错误是以下 Java 内容:
REASON: Caught exception running LDAP sync.
[LDAP: error code 2 - paged results cookie is invalid];
nested exception is javax.naming.CommunicationException:
[LDAP: error code 2 - paged results cookie is invalid];
remaining name 'dc=example,dc=com'
谷歌搜索该错误引发了对 LDAP 分页和相关限制的讨论。此文档OpenLDAP 限制提到olcSizeLimit
和size.pr
。
我可以使用此 ldif 将 olcSizeLimit 从 500 更改为 -1:
dn: cn=config
changetype: modify
replace: olcSizeLimit
olcSizeLimit: -1
不幸的是,我的客户端仍然看到其分页问题。
size.pr
是 slapd.conf 设置,而我的 OpenLDAP 使用的是 slapd.d。在 LDAP 模式中查找后,我发现olcDbClientPr
它被描述为'PagedResults handling'
。此外,以下是它在OpenLDAP 源代码:
{ "client-pr", "accept-unsolicited|disable|<size>", 2, 2, 0,
ARG_MAGIC|LDAP_BACK_CFG_CLIENT_PR,
meta_back_cf_gen, "( OLcfgDbAt:3.111 "
"NAME 'olcDbClientPr' "
"DESC 'PagedResults handling' "
"SYNTAX OMsDirectoryString "
"SINGLE-VALUE )",
NULL, NULL },
假设 olcDbClientPr 与 size.pr 相同,我该如何设置它?
我尝试过这个:
dn: cn=config
changetype: modify
replace: olcDbClientPr
olcDbClientPr: -1
它抛出这个错误:
modifying entry "cn=config"
ldap_modify: Object class violation (65)
additional info: attribute 'olcDbClientPr' not allowed
cn=config
如果相关的话,以下是我的目录的内容:
# ls /etc/openldap/slapd.d/cn=config/
cn=module{0}.ldif olcDatabase={0}config.ldif olcDatabase={1}hdb.ldif
cn=schema olcDatabase={-1}frontend.ldif olcDatabase={1}monitor.ldif
cn=schema.ldif olcDatabase={1}hdb
答案1
size.pr
是针对每个数据库(和 dn/group 范围)的olcLimits
选项。您可能还对全局选项感兴趣olcSizeLimit
。
从slapd-config(5)
:
olcSizeLimit:大小[.{soft|hard|unchecked}]= [...]
指定搜索操作返回的最大条目数。默认大小限制为 500。使用 unlimited 指定无限制。第二种格式允许对大小限制进行细粒度设置。可以在相同值或附加值中添加额外的参数。有关不同标志的说明,请参阅 olcLimits。
olcDbClientPr
是不是和 一样size.pr
。