[英]Apache as front to Tomcat with proxy with mod_proxy_ajp on Mavericks Mac
[英]Rewrite authenticated Apache2.2 user for mod_proxy_ajp
我有一個通過mod_proxy_ajp
連接到Apache2.2實例的Tomcat。 Apache通過mod_auth_kerb
進行身份驗證,而Tomcat使用request.getRemoteUser()
來獲取經過身份驗證的用戶。
這基本上可以工作,但是我想重寫用戶。 但是,我設置的所有標頭均不影響request.getRemoteUser()
返回的內容,我僅將它們視為其他標頭,我該怎么辦?
# Rewrite Magic: change REMOTE_USER to something Alfresco expects
RewriteEngine On
RewriteMap domain_map txt:/etc/apache2/rewrite-map.txt
# Grab the REMOTE_USER apache environment variable for HTTP forwarding (requires sub-request!)
RewriteCond %{LA-U:REMOTE_USER} (.*)@(.*)
# change the format and replace the domain, e.g.:
# user@some.domain ==> other.domain_user
RewriteRule . - [E=RU:${domain_map:%2|%2}_%1]
# copy processed user to HTTP headers
RequestHeader set REMOTE_USER %{RU}e
RequestHeader set HTTP_REMOTE_USER %{RU}e
RequestHeader set AJP_REMOTE_USER %{RU}e
RequestHeader set AJP_HTTP_REMOTE_USER %{RU}e
謝謝!
我懷疑標頭沒有按照您期望的那樣設置,並且它們到Tomcat的位置為空。
我遇到了一些令人費解的處理順序問題,這些問題導致RequestHeader
忽略RewriteRule
設置的環境變量。 看看https://stackoverflow.com/a/9303018/239408以防萬一
似乎getRemoteUser()值不能被Apache標頭指令覆蓋,因為AJP協議處理程序從某個內部Apache結構獲取用戶名。 我通過http頭發送用戶名並修改Java代碼以使用它而不是使用getRemoteUser()來解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.