【问题标题】:Setting up mod_proxy to pass http authentication to server设置 mod_proxy 以将 http 身份验证传递给服务器
【发布时间】:2011-06-02 10:01:04
【问题描述】:

我在将 Apache 配置为代理服务器时遇到问题。目前,我使用 domain.net 通过端口 80 访问 MS Sharepoint 安装。在能够使用它之前,我必须输入用户名和密码。到目前为止一切顺利。

现在我希望能够通过子域 web.domain.net 访问网站。托管此站点的服务器运行在内部网络中的另一台机器上。我想出的解决方案是将端口 80 重定向到运行 apache 的机器上,以便为新网站提供服务,并将对共享点的任何请求代理到共享点服务器。

到目前为止,我在 httpd.conf 中启用了所有代理模块并添加了一个虚拟主机。 编辑:首次响应后更新配置。

<VirtualHost *:80>
    ServerName domain.net

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyErrorOverride On
    ProxyPass   /   http://sharepoint/
    ProxyPassReverse   /   http://sharepoint/

    <Location />
        AuthType basic
        AuthBasicAuthoritative Off
        SetEnv proxy-chain-auth On
        Order allow,deny
        Allow from all
    </Location>
</VirtualHost>

这行得通。输入 domain.net 会将我转发到 sharepoint 服务器。现在真正的问题来了。 sharepoint 要求我提供我的凭据。但是当我输入它们时,登录表单会不断弹出,因为我输入的用户名和密码不正确或不正确。

似乎凭据没有通过代理转发到共享点。

你能给我任何建议如何解决这个问题吗?是否可以使用 mod_proxy 做到这一点?

【问题讨论】:

  • 你有没有得到这个工作?我们正在研究一个类似的问题,想知道解决方案是什么。
  • @x3ja 实际上我在几天后放弃了它,只是使用不同的端口并配置我的路由器,以便端口 80 重定向到共享点服务器和 8080 到子域托管服务器。如果您提出解决方案,请告诉我。我仍然有兴趣解决这个优雅的问题。

标签: apache proxy credentials http-authentication


【解决方案1】:

参见http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html:有一个proxy-chain-auth 环境变量应该将凭据转发到代理服务器。

【讨论】:

  • 在哪里执行 SetEnv proxy-chain-auth On 是否重要?我在 标记中添加了它,但重新启动 apache 后没有任何变化。
  • 啊,我不认为是这样:VirtualHost 部分中的任何地方都应该可以工作。但是,您可能需要适应 AuthType/AuthName 设置以强制 Apache 期望用户名/密码。如果您这样做,您可能希望使用httpd.apache.org/docs/2.2/mod/mod_auth_basic.html 中所述的AuthBasicAuthoritative Off 设置,以确保Apache 知道如果找不到它就传递它。不过可能会变得一团糟……
  • 听起来很有希望,但它不起作用:(我将原始问题中的配置更新为目前的配置。我将不胜感激。
  • 嗯。我将在今天晚些时候尝试:尝试将 SetEnv Proxy-Chain-Auth On 放入 Location 块中。
  • Proxy-chain-auth 仅适用于 Proxy-Authorization 标头。
猜你喜欢
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
相关资源
最近更新 更多