我需要将 Apache 配置为代理传递,以Authorization: Basic ...
针对 LDAP 服务器检查标头,如果凭据存在且正确,则设置自定义标头,但即使身份验证缺失或完全错误,也将请求传递给下游服务器。
我尝试了以下配置:
<Location ~ /my/path/(.*)/my/resource(/.+)?>
AuthType Basic
AuthName "Login with user id"
AuthBasicProvider ldap
AuthUserFile /dev/null
AuthLDAPURL "my LDAP url"
AuthLDAPBindDN "my bind variables"
AuthLDAPBindPassword ******
RequestHeader set X-Authenticated-User %{AUTHENTICATE_uid}e
SetEnv 1 noauth
<RequireAny>
Require valid-user
Require env noauth
</RequireAny>
ProxyPreserveHost On
ProxyPass http://downstream.server/my/other/path/$1/$2
ProxyPassReverse http://downstream.server/my/other/path/$1/$2
</Location>
但这样一来,即使凭证有效,也X-Authenticated-User
总是(null)
有效的,这可能是因为 Apache 进行了优化,根本不执行检查。
(null)
如果密码不匹配或根本不存在,我可以设法解决。
我的要求是总是发送到下游服务器,X-Authenticated-User
仅当密码匹配时才设置为给定的用户名。
我编辑了配置:如果我注释该Require env noauth
行,基本身份验证就可以正常工作。