1

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

谢谢!

4

2 回答 2

0

似乎 getRemoteUser() 值不能被 Apache 标头指令覆盖,因为 AJP 协议处理程序从某些内部 Apache 结构获取用户名。我通过 http 标头发送用户名并修改 Java 代码以使用它而不是使用 getRemoteUser() 来解决此问题。

于 2012-02-16T13:24:46.433 回答
0

我怀疑标题没有像您期望的那样设置,并且它们正在进入 Tomcat 空。

我遇到了一些令人费解的处理顺序问题,这些问题导致RequestHeader忽略由RewriteRule. 看看https://stackoverflow.com/a/9303018/239408以防万一

于 2012-02-16T08:58:04.090 回答