
我需要配置為代理傳遞的 Apache 來根據 LDAP 伺服器檢查Authorization: Basic ...
標頭,如果憑證存在且正確,則設定自訂標頭,但即使身份驗證遺失或完全錯誤,也將請求傳遞到下游伺服器。
我嘗試了以下配置:
<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
行,則基本身份驗證可以正常工作。