在我的Debian服务器上,我configuration了LDAP服务器slapd ,只接受通过Unix域套接字文件的连接。 这是/etc/defaults/slapd的相关部分:
SLAPD_SERVICES="ldapi:///"
我一直很高兴地接受这个configuration,各种各样的PHP应用程序都很好地工作。 现在我正在尝试将Apacheconfiguration为通过LDAP进行身份validation。 我正在通过核心模块mod_authnz_ldap做到这一点。 ldapi使用ldapi URLscheme不起作用:
AuthLDAPUrl ldapi:///ou=users,dc=example,dc=com?uid?sub?(objectClass=*)
我所看到的所有Apache错误都是TCP连接尝试localhost:389和127.0.0.1:389 ,当然,都被拒绝,因为没有人在这个端口上侦听。 我也尝试了两个URL,两者都有相同的负面结果:
# Same as the 1st attempt, but with ldap:// instead of ldapi:// AuthLDAPUrl ldap:///ou=users,dc=example,dc=com?uid?sub?(objectClass=*) # Getting desperate: Specify the file path of the Unix domain socket file AuthLDAPUrl ldap:///var/run/slapd/ldapi/ou=users,dc=herzbube,dc=ch?uid?sub?(objectClass=*)
AuthLDAPUrl的Apache 2.4文档声明如下:
指定要使用的LDAPsearch参数的RFC 2255 URL。
RFC 2255确实没有提到ldapi URLscheme,也没有提到如何指定Unix域套接字文件path。
我忽略了什么? 有谁知道我怎么可以得到mod_authnz_ldap使用Unix域套接字文件进行连接? 或者是真的,因为我害怕,不可能用mod_authnz_ldap做到这一点?
我的设置:
/var/run/slapd/ldapi可由Web服务器用户www-data 恐怕不是来自模块mod_authnz_ldap指令AuthLDAPURL 。
至less在我写这些行的时候。
一个错误跟踪报告已经发布,并准确描述你正在面对的行为:
https://bz.apache.org/bugzilla/show_bug.cgi?id=44302
如果你inputldapi:///,它(默默)被视为ldap:// localhost:389,也就是说,连接仍然通过TCP到本地主机