簡體   English   中英

為mod_proxy_ajp重寫經過身份驗證的Apache2.2用戶

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM