在我的 Debian 服务器上,我已将 LDAP 服务器配置slapd
为仅通过 Unix 域套接字文件接受连接。以下是相关部分/etc/defaults/slapd
:
SLAPD_SERVICES="ldapi:///"
我一直很满意这种配置,各种 PHP 应用程序都可以很好地使用它。现在,我正尝试配置 Apache 以通过 LDAP 进行身份验证。我通过核心模块执行此操作mod_authnz_ldap
。单纯使用ldapi
URL 方案不起作用:
AuthLDAPUrl ldapi:///ou=users,dc=example,dc=com?uid?sub?(objectClass=*)
我在 Apache 错误中看到的只是对localhost:389
和 的TCP 连接尝试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=*)
这Apache 2.4 文档例如AuthLDAPUrl
:
指定要使用的 LDAP 搜索参数的 RFC 2255 URL。
RFC 2255确实没有提到ldapi
URL 方案,也没有提到如何指定 Unix 域套接字文件路径。
我是不是忽略了什么?有人知道我如何mod_authnz_ldap
使用 Unix 域套接字文件进行连接吗?或者,正如我担心的那样,确实不可能做到这一点mod_authnz_ldap
?
我的设置:
- Debian 杰西
- Apache 2.4.10
- OpenLDAP 2.4.40
- Unix 域套接字文件
/var/run/slapd/ldapi
可供 Web 服务器用户读取www-data
答案1
恐怕它不受AuthLDAPURL
模块指令的支持mod_authnz_ldap
。
至少在我写下这些话的时候是这样的。
错误跟踪报告已发布,并准确描述了您所遇到的行为:
https://bz.apache.org/bugzilla/show_bug.cgi?id=44302
如果你输入 ldapi:///,它将被(默默地)视为 ldap://localhost:389,也就是说,连接仍然通过 TCP 连接到本地主机