Apache 2.4 LDAP 查找缓慢

Apache 2.4 LDAP 查找缓慢

服务器运行的是 RHEL 7 和 Apache 2.4.6;这是一个相当新的问题(大约一周前)。我所在部门的内部网使用针对大学 Active Directory 环境的身份验证,最终用户的身份验证需要 30 多秒。后续页面加载几乎是即时的,过了一段时间(我猜是超时),问题又出现了。

<Directory /var/www/html/intranet>
  AuthType Basic
  AuthName "Restricted files"
  AuthBasicProvider ldap
  AuthLDAPBindDN CN=dept-binder,OU=Generic-Logon,OU=Generic,DC=example,DC=edu
  AuthLDAPBindPassword lamepassword
  AuthLDAPURL ldaps://ldap-ad.example.edu:636/dc=example,dc=edu?sAMAccountName?sub

  <RequireAny>
    require ldap-group CN=ug-dept-intranet,OU=Deoartment,OU=Dept-Groups,DC=example,DC=edu
  </RequireAny>
</Directory>

以下是 error_log 中的一些相关行:

AH02034: Initial (No.1) HTTPS request received for child 36 (server dept.example.edu:443)
AH01626: authorization result of Require ldap-group CN=ug-psy-employees,OU=Dynamic,OU=Psychology,OU=FSU-Dept-Groups,DC=fsu,DC=edu: denied (no authenticated user yet)
AH01626: authorization result of Require ldap-group CN=ug-dept-intranet,OU=Dept,OU=Dept-Groups,DC=example,DC=edu: denied (no authenticated user yet)
AH01691: auth_ldap authenticate: using URL ldaps://ldap-ad.example.edu:636/dc=example,dc=edu?sAMAccountName?sub
AH02001: Connection closed to child 11 with standard shutdown (server dept.example.edu:443)

# 37 seconds pass

AH01697: auth_ldap authenticate: accepting jsmith
AH01713: auth_ldap authorize: require group: testing for group membership in "CN=ug-dept-intranet,OU=Department,OU=Dept-Groups,DC=example,DC=edu"
AH01714: auth_ldap authorize: require group: testing for member: CN=jsmith,OU=PEOPLE,DC=example,DC=edu (CN=ug-dept-intranet,OU=Department,OU=Dept-Groups,DC=example,DC=edu)
AH01715: auth_ldap authorize: require group: authorization successful (attribute member) [Comparison true (adding to cache)][6 - Compare True]

答案1

我在 Fedora 33 和 Apache 2.4 上遇到了完全相同的问题,我通过添加以下内容解决了该问题:

LDAPConnectionTimeout 1

Apache 全局配置: https://httpd.apache.org/docs/2.4/mod/mod_ldap.html

上述参数将 LDAP 连接超时设置为 1 秒。
我使用的是带 TLS 的 LDAPS,我怀疑延迟是由于 Apache 尝试解析名称或验证 Active Directory/DC 非合格(自行注册)证书造成的。

答案2

如果你的目录很大(大学,所以可能很大),查询可能会很慢。你需要调整它们。没有灵丹妙药,但有一些提示:

  • 按索引属性进行过滤
  • 如果属性被列为全局目录复制,请尝试使用全局目录端口
  • 避免(如果可能的话)子范围搜索。这显然并不总是可行的,但通常是可行的。

此处列出了更多内容微软文档

你可以试试调试 mod_ldap,也许你可以通过这种方式发现一些明显的问题,注意凭据可能会出现在调试日志中。

相关内容