【问题标题】:Apache & Tomcat reverse proxy with basic authentication: Can Tomcat receive the username?具有基本身份验证的 Apache 和 Tomcat 反向代理:Tomcat 可以接收用户名吗?
【发布时间】:2015-11-05 11:32:03
【问题描述】:

我已成功将 Apache 配置为侦听 SSL/443 和代理 Tomcat 侦听 HTTP/8080。我还在 Apache 中设置了基本身份验证。

一旦用户连接到我的 Tomcat servlet,HttpServletRequest.getRemoteUser() 将被填充还是为空。如果为null,如何获取远程用户?

【问题讨论】:

  • 你使用的是mod_proxy还是mod_proxy_ajp
  • @larsks 我正在使用 mod_proxy。

标签: apache tomcat reverse-proxy


【解决方案1】:

最简单的解决方案可能是使用mod_proxy_ajp,它除了代理请求外,还会向Tomcat传输各种元数据,包括REMOTE_USER等身份验证信息。

These docs for Alfresco 讨论此配置,其中包括 Tomcat 端(以便它知道信任转发的身份验证)和 Apache 端的更改。

如果您使用像 mod_proxy 这样的通用 http 代理,则需要安排 Apache 将 REMOTE_USER 的值添加到请求中(可能作为 X- 标头),然后安排您的Tomcat 应用程序来识别和信任该标头(显然您需要安排您的前端代理从任何传入请求中剥离该标头)。

我不知道你会如何在 tomcat 方面做到这一点,但this post 似乎有一些建议。

【讨论】:

    【解决方案2】:

    我需要添加

    <Location />
        Order allow,deny
        Allow from all
        RequestHeader unset Authorization
    </Location>
    

    到包装位置,RequestHeader 是修复它的专业。

    我(再次)通过http://codeblow.com/questions/remove-fundamental-authentication-header-with-apache-mod-proxy/ 找到了这个 - 不知道我去年最初在哪里找到它,这是针对某些安全问题的最后措施。

    【讨论】:

      猜你喜欢
      • 2011-06-28
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多