![使用 OpenLDAP 和 Apache 2.4 进行身份验证](https://linux22.com/image/703461/%E4%BD%BF%E7%94%A8%20OpenLDAP%20%E5%92%8C%20Apache%202.4%20%E8%BF%9B%E8%A1%8C%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81.png)
我试图使用经过身份验证的 ldap 用户限制对文件夹的访问,这曾经在 ubunbt 14.04 上与 apache 一起工作,但是现在我尝试使用 16.04,但是它不起作用,我收到 AH1618 用户未找到错误,我确定这很简单:)
用户在这个“域”中ou=Users,dc=ldap,dc=kattronics,dc=com
当访问网页时,系统提示我输入密码,这是好的,但是我收到这个错误。
[auth_basic:错误] [pid 10821] [客户端 10.0.5.167:58662] AH01618:未找到用户 lasse.knudsen:/
也许后面的斜线会提供线索
已为 apache2 启用调试
AH01694:auth_ldap 身份验证:用户 lasse.knudsen 身份验证失败;URI / [LDAP:ldap_simple_bind() 失败][无法联系 LDAP 服务器](不具有权威性)
无法联系 LDAP 服务器,令我感到困惑,主机确实解决了。
任何人都可以给我指明正确的方向。
来自 apache 站点配置的目录条目
<Directory /var/www/html>
AuthName "Restricted - Kattronics Users Only"
AuthType Basic
#Satisfy any
AuthBasicProvider ldap
AuthLDAPUrl "ldaps://dc2-ldap001:636/ou=Users,dc=ldap,dc=kattronics,dc=com?uid"
AuthLDAPBindDN "ou=Users,dc=ldap,dc=kattronics,dc=com"
AuthLDAPBindAuthoritative off
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
#Require valid-user
Require ldap-user # Gives error AH01618
</Directory>
解决方法如下
<IfModule mod_authnz_external.c>
AddExternalAuth pwauth /usr/sbin/pwauth
SetExternalAuthMethod pwauth pipe
</IfModule>
<Directory /var/www/html>
AuthType Basic
AuthName "Login"
AuthBasicProvider external
AuthExternal pwauth
Require valid-user
</Directory>
答案1
大多数 LDAP 服务器都要求您先进行身份验证,然后才能请求任何有用的目录信息。在 LDAP 术语中,连接被称为“绑定“到目录服务器。
这意味着 Apache 需要配置用户名和密码。用户名必须是完整的 Distinct Name,其中包括存储目录的完整路径和您的AuthLDAPBindDN
需要看起来像这样:
AuthLDAPBindDN "CN=apache,OU=Service Accounts,DC=example,DC=com"
你可能需要一个AuthLDAPBindPassword
(最好是永不过期的)以及:
AuthLDAPBindPassword y0ur_p@ssw0rd
使用 TLS/SSL 安全 LDAP 连接时的第二个问题是 Apache 需要验证 LDAP 服务器使用的服务器证书的真实性。通常,我认为 LDAP 服务器不使用由知名公共 CA 颁发的证书,而是由内部 CA 颁发的证书。将 CA 证书下载到您的 Web 服务器并使用LDAPTrustedGlobalCert
指令即
LDAPTrustedGlobalCert type directory-path/filename [password]
或者,作为一种不安全的解决方法,使用 LDAPVerifyServerCert
指令并且不验证服务器证书:
LDAPVerifyServerCert off