使用 OpenLDAP 和 Apache 2.4 进行身份验证

使用 OpenLDAP 和 Apache 2.4 进行身份验证

我试图使用经过身份验证的 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

相关内容