我已将 Apache 设置为通过 ldap 为我的用户使用活动目录进行身份验证。有几个“系统”用户(用于自动构建测试)是手动设置并通过文件进行身份验证的。
AuthBasicProvider ldap file
我遇到的问题是 Active Directory 框偶尔会因维护或其他原因而关闭,我不希望我的“系统”用户在此期间被拒绝访问。我希望 Apache 尝试使用文件进行身份验证,然后使用 ldap,但这似乎不可能。根据http://httpd.apache.org/docs/2.2/mod/mod_auth_basic.html,“处理顺序由模块源代码决定,且不可配置。”
这似乎不对。我认为人们(通常)会想要指定身份验证提供程序的顺序(如果不是出于我想要的原因,那么就是出于其他原因)。有没有办法在不破解源代码的情况下做到这一点?
ps 更改配置AuthBasicProvider file ldap
没有任何区别。
答案1
根据http://httpd.apache.org/docs/2.2/mod/mod_auth_basic.html,“处理顺序由模块源代码决定,且不可配置。”
上面的引文是不是谈论你所问的问题:
mod_auth_basic
只有在与第三方模块结合时才有必要这样做不是使用AuthBasicProvider
指令进行配置。使用此类模块时,处理顺序由模块的源代码决定,不可配置。
从 2.2 版开始,Apache 允许使用多个提供商。我已经在我的系统(Apache 2.2.20)上测试过,它运行良好:
<Location />
AuthType Basic
AuthBasicProvider file ldap
AuthUserFile /etc/httpd/passwords
AuthzLDAPAuthoritative Off
AuthLDAPURL ldap://ip:389/dc=x,dc=y?cn
AuthLDAPBindDN cn=anonymous,ou=z,dc=x,dc=y
AuthLDAPBindPassword pa$$w0rd
AuthName "Restricted Area"
AuthzLDAPGroupBase ou=z,dc=x,dc=y
AuthzLDAPGroupkey cn
AuthzLDAPMemberKey member
AuthzLDAPSetGroupAuth user
require valid-user
AuthzLDAPLogLevel error
</Location>
停止 OpenLDAP,我仍然可以使用 中的用户登录/etc/httpd/passwords
。