我已成功配置Apache以侦听SSL / 443和代理Tomcat侦听HTTP / 8080 . 我还在Apache中设置了基本身份验证 .
一旦用户连接到我的Tomcat servlet,就会填充HttpServletRequest.getRemoteUser()或为null . 如果为null,我如何获得远程用户?
我需要补充一下
<Location /> Order allow,deny Allow from all RequestHeader unset Authorization </Location>
到包装位置,RequestHeader是修复它的专业 .
我发现这个(再次)通过http://codeblow.com/questions/remove-fundamental-authentication-header-with-apache-mod-proxy/ - 不知道我去年在哪里找到它,这是一些安全问题的最后一个措施 .
最简单的解决方案可能是使用 mod_proxy_ajp ,除了代理请求之外,还会将各种元数据传输到Tomcat,包括身份验证信息,如 REMOTE_USER .
mod_proxy_ajp
REMOTE_USER
These docs for Alfresco讨论了这个配置,其中包括Tomcat端的更改(以便它知道信任转发的身份验证)和Apache端 .
如果您正在使用像 mod_proxy 这样的通用http代理,则需要安排Apache将 REMOTE_USER 的值添加到请求中(可能作为 X- 标头),然后安排您的Tomcat应用程序识别并信任该标头(您显然需要安排前端代理从任何传入请求中删除该标头) .
mod_proxy
X-
我不知道你会如何在tomcat上做到这一点,但this post似乎有一些建议 .
2 回答
我需要补充一下
到包装位置,RequestHeader是修复它的专业 .
我发现这个(再次)通过http://codeblow.com/questions/remove-fundamental-authentication-header-with-apache-mod-proxy/ - 不知道我去年在哪里找到它,这是一些安全问题的最后一个措施 .
最简单的解决方案可能是使用
mod_proxy_ajp
,除了代理请求之外,还会将各种元数据传输到Tomcat,包括身份验证信息,如REMOTE_USER
.These docs for Alfresco讨论了这个配置,其中包括Tomcat端的更改(以便它知道信任转发的身份验证)和Apache端 .
如果您正在使用像
mod_proxy
这样的通用http代理,则需要安排Apache将REMOTE_USER
的值添加到请求中(可能作为X-
标头),然后安排您的Tomcat应用程序识别并信任该标头(您显然需要安排前端代理从任何传入请求中删除该标头) .我不知道你会如何在tomcat上做到这一点,但this post似乎有一些建议 .