使用反向代理绕过http身份验证

时间:2012-02-18 22:34:20

标签: apache authentication mod-proxy

我们正在运行使用HTTP身份验证的旧版Web应用程序。我想让一些用户可以使用这个应用程序,但我不想公开用户名/密码,我不想暴露应用程序运行的服务器。

要解决这个问题,我打算使用mod_proxy。我做了以下配置:

<VirtualHost *:443>
    # SSL stuff goes in here
    ServerName "proxy.local"
    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass / http://admin:password@legacy.local:80/
    ProxyPassReverse / http://admin:password@legacy.local:80/
</VirtualHost>

除了仍然要求用户自己键入admin / password的部分之外,这是有效的。 我可以让Apache发送ProxyPassReserve中提供的用户名/密码而不是询问用户吗?我在Apache mod_proxy documentation中找不到答案。

1 个答案:

答案 0 :(得分:2)

在传递来自mod_proxy的请求之前,您必须启用mod_headers并设置http Authorization标头。

只需base-64编码admin:password字符串并将RequestHeader指令添加到您的配置中:

RequestHeader set Authorization: "Basic YWRtaW46cGFzc3dvcmQ="


<VirtualHost *:443>
    # SSL stuff goes in here
    ServerName "proxy.local"
    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass / http://legacy.local:80/
    ProxyPassReverse / http://legacy.local:80/
    RequestHeader set Authorization: "Basic YWRtaW46cGFzc3dvcmQ="
</VirtualHost>