OpenLDAP 仅作为代理缓存,没有本地数据库

OpenLDAP 仅作为代理缓存,没有本地数据库

我正在尝试运行本地 LDAP 代理缓存。这个想法是这样的:

  • 当前计算机(A)正在将所有 LDAP 请求发送到远程 LDAP 服务器(L)
  • 相反,应该有一个运行的代理缓存“服务器”A来充当A和之间的中间人L。缓存将存储所有查询及其所有属性(直到它被填满,然后开始“回收”)。

OpenLDAP 的代理缓存引擎看起来不错,但关于如何设置的信息不多。有一个示例配置文件,但我无法让它工作。

由于这应该只是代理缓存,因此我不需要设置本地数据库。所以配置文件看起来像这样:

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema

moduleload pcache.la

database        ldap
suffix          "dc=int,dc=somedomain,dc=com"
rootdn          "dc=int,dc=somedomain,dc=com"
uri             ldap://dc-04.int.somedomain.com:389

overlay pcache
pcache         hdb 100000 1 1000 100
pcacheAttrset  0 *
pcacheTemplate (sn=) 0 3600

cachesize 20
directory /var/lib/ldap
index       objectClass eq
index       cn eq,sub

现在,我希望任何对 ldap://localhost 的请求都会镜像到远程 LDAP(如果不在缓存中)。

我使用此命令来测试远程服务器上的身份验证:

ldapwhoami -vvv -h dc-04.int.somedomain.com -p 389 -D [email protected] -x -w <passwd>

效果很好,我得到了授权。

但是,当我尝试在本地主机上运行相同的命令时:

ldapwhoami -vvv -h localhost -p 389 -D [email protected] -x -w <passwd>

它失败了,说

ldap_initialize( ldap://localhost:389 )
ldap_bind: Invalid DN syntax (34)
    additional info: invalid DN

Slapd 正在本地主机上侦听,netstat 包含此行:

tcp        0      0 0.0.0.0:389                 0.0.0.0:*                   LISTEN      10352/slapd

我有什么遗漏的吗?谢谢

答案1

ldap_bind:无效的 DN 语法 (34) 附加信息:无效的 DN

这意味着使用了无效的专有名称。请注意,[email protected]在简单绑定请求中使用诸如绑定 DN 之类的内容仅适用于 MS Active Directory,不适用于其他 LDAP 服务器。因此,您的本地 LDAP 代理会拒绝此请求,而不执行其他操作。

相关内容