Apache LDAP 身份验证仅适用于某些虚拟主机

Posted

技术标签:

【中文标题】Apache LDAP 身份验证仅适用于某些虚拟主机【英文标题】:Apache LDAP Authentication only for some virtualhosts 【发布时间】:2018-01-15 18:16:21 【问题描述】:

我有一个在 CentOS 7 下运行 Apache 2.4.6 的网络服务器,其中有几个网络资源。我只想对其中一些应用 LDAP 身份验证,因此我尝试通过为每个资源创建一个虚拟主机并将 LDAP 身份验证仅配置到我想要的资源来实现。

这是我的尝试:

/etc/httpd/conf.d/test1.conf:

<VirtualHost *:80>
Servername server_name
DocumentRoot /var/www/html/test1

<Directory "/var/www/html/test1">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

#LDAP
SetHandler php-script
Require all denied
AuthBasicProvider ldap
AuthUserFile /dev/null
AuthName "ldap_auth"
AuthType Basic
AuthLDAPURL ldap_url
AuthLDAPBindDN ldap_dn
AuthLDAPBindPassword ldap_pass
Require ldap-group ldap_group

</Directory>
</VirtualHost>

/etc/httpd/conf.d/test2.conf:

<VirtualHost *:80>
  Servername server_name
  DocumentRoot /var/www/html/test2

  <Directory "/var/www/html/test2">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

这是我当前httpd.conf文件的相关信息:

ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache

<Directory />
AllowOverride none
Require all denied
</Directory>

<Directory "/var/www">
AllowOverride None
Require all granted
</Directory>

<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

IncludeOptional conf.d/*.conf

但它总是要求对 test1 和 test2 进行身份验证,而对于 test2,我什至无法在登录后加载内容(test1 加载正常)。

【问题讨论】:

【参考方案1】:

最后通过使用Alias指令实现,所以:

/etc/httpd/conf.d/test1.conf:

<VirtualHost *:80>
Servername server_name
DocumentRoot /var/www/html/test1

Alias /test1 /var/www/html/test1
<Directory "/var/www/html/test1">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

#LDAP
SetHandler php-script
Require all denied
AuthBasicProvider ldap
AuthUserFile /dev/null
AuthName "ldap_auth"
AuthType Basic
AuthLDAPURL ldap_url
AuthLDAPBindDN ldap_dn
AuthLDAPBindPassword ldap_pass
Require ldap-group ldap_group

</Directory>
</VirtualHost>

/etc/httpd/conf.d/test2.conf:

<VirtualHost *:80>
Servername server_name
DocumentRoot /var/www/html/test2

Alias /test2 /var/www/html/test2
<Directory "/var/www/html/test2">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

【讨论】:

以上是关于Apache LDAP 身份验证仅适用于某些虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章

Ldap 身份验证不适用于 Spring Boot

使用 Apache HTTPSever 2.4.x 的活动目录 SASL 身份验证

使用apache LDAP在java中进行LDAP身份验证

如何使用带有 LDAP 身份验证的 Apache Shiro 添加角色授权

Mongo“身份验证失败”仅适用于远程连接。本地工作正常

Firebase仅在某些设备上进行身份验证?