我正在对Apache中具有两个 AuthBasicProviders的网站使用LDAP身份验证。 如果其中一个LDAP服务器无法访问(例如,由于:服务器已关闭或其网络无法访问),如果要验证的UID来自此LDAP服务器,则会收到“内部服务器错误”消息。
我该如何捕捉这种情况并返回一条友好消息。类似的东西:
“很抱歉,我们目前无法检查您的身份验证。”
两个ldap服务器的UID都是唯一的。
如果我将“ ldap_remote”放在前面,则无法访问 =>它总是失败(“ ldap_local”不会被询问)。
如果我将“ ldap_local”放在前面,则会首先对其进行搜索 以及是否存在UID =>正常(密码正确与否)。
但是,如果UID不在“ ldap_local”上,则将询问“ ldap_remote”。 如果ldap_remote可访问=>正常(是否输入正确的密码)。 但是,如果无法访问,则=>“内部服务器错误”:-(
我在Apache2配置中使用以下内容:
# this one is always reachable
<AuthnProviderAlias ldap ldap_local>
AuthLDAPUrl ldap://127.0.0.1/dc=mycompany,dc=com
</AuthnProviderAlias>
# Not always available
<AuthnProviderAlias ldap ldap_remote>
AuthLDAPUrl ldap://xyz.mycompany.com:389/dc=mycompany,dc=com?sAMAccountName
AuthLDAPBindDN ldapadmin@mycompany.com
AuthLDAPBindPassword xxxxxxxxx
</AuthnProviderAlias>
# and later ...
<Location /foo >
AuthName "foo at my-server"
AuthType Basic
AuthBasicProvider ldap_local ldap_remote
Require valid-user
</Location>