Назад | Перейти на главную страницу

получить аутентифицированного пользователя под apache

Использование Apache 2.2 в Windows с mod_auth_sspi и mod_headers. Я пытаюсь передать текущего аутентифицированного пользователя прокси-серверу в заголовке X-Remote-User.

Я ожидаю, что это просто, но я уже час спорил с Apache и не могу найти секретный соус в документации или в Google.

Моя конфигурация следующая. Он правильно аутентифицирует пользователя с помощью Active Directory, а затем проксирует запрос на сервер, находящийся позади. Однако заголовок X-Remote-User не добавляется. Похоже, что переменная среды REMOTE_USER не существует. И AUTH_USER тоже.

Я знаю, что аутентифицированное имя пользователя где-то доступно, но как его получить?

ProxyRequests off
ProxyPass /clsoap/ http://127.0.0.1:12001/clsoap/

<Location /clsoap/>
    ProxyPassReverse /clsoap/

    AuthName "ADTest"
    AuthType SSPI
    SSPIAuth On
    SSPIAuthoritative On
    SSPIDomain primary.example.com
    SSPIUsernameCase lower
    SSPIOfferBasic Off
    Require valid-user

    RequestHeader set X-Remote-User "%{REMOTE_USER}e" env=REMOTE_USER
    RequestHeader set X-Auth-User "%{AUTH_USER}e" env=AUTH_USER
</Location>

Ура. Другой сеанс Google позже пробовал разные случайные ключевые слова, и я обнаружил следующее:

http://www.ruby-forum.com/topic/83067

http://old.nabble.com/Forcing-a-proxied-host-to-generate-REMOTE_USER-to2911573.html#a2914465

Теперь это работает:

ProxyRequests off
ProxyPass /clsoap/ http://127.0.0.1:12001/clsoap/

<Location /clsoap/>
    ProxyPassReverse /clsoap/

    AuthName "ADTest"
    AuthType SSPI
    SSPIAuth On
    SSPIAuthoritative On
    SSPIDomain primary.example.com
    SSPIUsernameCase lower
    SSPIOfferBasic Off
    Require valid-user

    RewriteEngine On
    RewriteCond %{LA-U:REMOTE_USER} (.+)
    RewriteRule . - [E=RU:%1]
    RequestHeader set X-Remote-User "%{RU}e" env=RU
</Location>

Я знаю, что это старый пост, но, поскольку пользователи все еще находят его, я подумал, что добавлю, что существует огромная разница в том, какие переменные доступны в среде ssl "% {VAR} s" и в среде без ssl% {VAR} е

Я обнаружил, что pubcookie устанавливает удаленного пользователя только как безопасную переменную среды, которую я могу пересылать следующим образом:

    RequestHeader set X-REMOTE-USER %{REMOTE_USER}s

ПРИМЕЧАНИЕ: оканчивается на s, а не на e!

Теперь это может быть потенциальная дыра в безопасности, которая приводит к утечке информации об имени пользователя хакерам, если вы когда-либо перенаправляете запросы на другие серверы или используете http. Я лично пересылаю только localhost, поэтому для меня это не проблема.