Переписать аутентифицированного пользователя Apache2.2 для mod_proxy_ajp - PullRequest
1 голос
/ 14 марта 2011

У меня есть 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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 16 февраля 2012

Кажется, значение getRemoteUser () не может быть перезаписано директивами заголовка Apache, так как обработчик протокола AJP получает имя пользователя из некоторой внутренней структуры Apache.Я решил эту проблему, отправив имя пользователя через заголовок http и изменив код Java, чтобы использовать его вместо использования getRemoteUser ().

0 голосов
/ 16 февраля 2012

Я подозреваю, что заголовки не устанавливаются так, как вы ожидаете, что они установлены, и они становятся пустыми в Tomcat.

У меня возникли некоторые загадочные проблемы с порядком обработки, из-за которых RequestHeader игнорировалпеременные окружения, установленные RewriteRule.Взгляните на https://stackoverflow.com/a/9303018/239408, если это поможет

...