在apache下获取认证用户

bro*_*eld 8 authentication http-headers apache-2.2

在 Windows 上使用带有 mod_auth_sspi 和 mod_headers 的 Apache 2.2。我正在尝试将当前经过身份验证的用户传递到 X-Remote-User 标头中的代理目标。

我希望这很简单,但是我已经与 Apache 争论了一个小时,在文档或谷歌中找不到秘诀。

我的配置如下。它使用 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>
Run Code Online (Sandbox Code Playgroud)

bro*_*eld 7

好极了。另一个谷歌会话后来尝试了不同的随机关键字,我发现了这个:

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>
Run Code Online (Sandbox Code Playgroud)