是否有可能使反向代理(Apache HTTP 2.2)处理身份validation(HTTP Basic),然后仍然使用Java应用程序服务器(GlassFish 3.1或JBoss 7.0.2)的容器pipe理的安全性进行授权?
我有GlassFish做容器pipe理的安全(authentication和授权在一起),同时使用声明和程序化的容器安全性与基于表单的身份validation和自定义的GlassFish身份validation模块。 我甚至通过使用mod_proxy_ajp的Apache HTTP Web服务器反向代理来实现这个工作。 现在我只是试图find一种方法来卸载身份validation件到Apache,同时保持容器pipe理的安全授权片。 也许在Java应用程序服务器中有一个单点login接口,这将有助于实现这一点(因为这就像SSO – Apache需要对身后所有东西进行身份validation)?
用户数据可用于CGI和环境variables等。 你必须以某种方式传递 – 或者通过一些网关cgi,或者通过插入一个头。
以下是如何通过头插入来实现的一个例子。 我很抱歉提出我没有尝试过的事情,但似乎是合理的,是吗?
RequestHeader unset REMOTE-USER RequestHeader add REMOTE-USER %{REMOTE-USER}e
然而,我怀疑,当这个环境variables会,如果你是代理,它将永远是空的。 如果是这样的话,你可以使用mod_rewrite来使用预读variables。 (请参阅LA-U示例和解释的mod_rewrite文档。)
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。