我有一个Tomcat通过mod_proxy_ajp
连接到Apache2.2实例。 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
谢谢!
答案 0 :(得分:0)
我怀疑未设置标头,因为您希望设置它们,并且它们会将Tomcat设置为空。
我遇到了一些令人费解的处理订单问题,导致RequestHeader
忽略RewriteRule
设置的环境变量。如果有帮助,请查看https://stackoverflow.com/a/9303018/239408
答案 1 :(得分:0)
似乎getLmoteUser()值不能被Apache头指令覆盖,因为AJP协议处理程序从某个内部Apache结构获取用户名。我通过http头发送用户名并修改Java代码来使用它而不是使用getRemoteUser()来解决这个问题。