反向代理和 Java 应用服务器安全

反向代理和 Java 应用服务器安全

是否可以让反向代理(Apache HTTP 2.2)处理身份验证(HTTP Basic),然后仍然使用 Java 应用程序服务器(GlassFish 3.1 或 JBoss 7.0.2)的容器管理安全性进行授权?

我让 GlassFish 很好地执行容器管理安全(身份验证和授权),同时使用声明式和编程式容器安全以及基于表单的身份验证和自定义 GlassFish 身份验证模块。我甚至使用 mod_proxy_ajp 通过 Apache HTTP Web 服务器反向代理实现了这一点。现在我只是想找到一种方法,将身份验证部分卸载到 Apache,同时维护容器管理的安全授权部分。也许 Java 应用服务器中有一个单点登录界面可以促进这一点(因为这就像 SSO - Apache 要求对其背后的所有内容进行身份验证)?

答案1

用户数据可供 CGI 和环境变量等使用。您必须以某种方式传递这些数据 - 通过某个网关 cgi,或者可能将它们插入到标头中。

下面是一个例子可能可以通过插入标题来实现。抱歉,我建议了一些我自己没有尝试过的方法,但这似乎是合理的,对吧?

RequestHeader unset REMOTE-USER
RequestHeader add REMOTE-USER %{REMOTE-USER}e

但是,我怀疑,当该环境变量为 null 时,如果您正在代理,它将始终为 null。如果是这种情况,您可能能够使用 mod_rewrite 使用前瞻变量。(请参阅 mod_rewrite 文档以了解 LA-U 示例和说明。)

RequestHeader unset REMOTE-USER
RewriteCond %{LA-U:REMOTE_USER} (.*)
RewriteRule .* - [E=MY_REMOTE_USER:%1]
RequestHeader add REMOTE-USER %{MY_REMOTE_USER}e

这需要 mod_rewrite 和 mod_headers。

相关内容