Apache - LDAP 基本身份验证已检查但不是必需的

Apache - LDAP 基本身份验证已检查但不是必需的

我需要将 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行,基本身份验证就可以正常工作。

相关内容