我正在对一个部署在最新的Glassfish服务器(3.1.2)上的多模块应用程序使用标准容器身份验证。
我曾经对主web模块使用表单身份验证,对包含rest web服务的模块使用http基本身份验证。
现在,对于这两个模块,我需要能够执行证书身份验证,但仅作为一个选项。一些客户端仍然需要能够通过表单/基本身份验证登录。
我尝试使用JSR-196拦截反向代理转发的证书身份验证数据。这里的问题是,在Glassfish中,如果我使用JSR-196,我似乎需要重新实现容器提供的一些帮助:在会话中存储身份验证,SSO,甚至表单/基本身份验证……这似乎是玻璃鱼的方式或我的,但我想要混合。因此,我的JSR-196模块现在需要处理证书、基本和表单身份验证以及持久性机制。看起来太夸张了。
我尝试了一种更简单的方法,即使用表单身份验证,并让反向代理将身份验证数据发送到j_security_check。它适用于第一个模块,但它太具体实现了,看起来真的很像黑客。
我还设想在另一个模块中进行证书身份验证,直接在应用程序服务器上(没有反向代理),并在通过身份验证后重定向到原始模块,使用sso作为粘合剂。但是glassfish上的sso不能在具有不同身份验证类型的模块之间工作。
如果可能的话,我更喜欢使用标准的,优雅的东西。此外,我希望我的应用程序使用Java安全性,而不是某个第三方库,无论它是来自Spring还是其他任何东西。
在Glassfish上实现这一点的选择是什么?
发布于 2012-08-27 14:24:36
最后,我使用以下几种方法的组合来实现它:
下
反向代理不用于ssl。我知道潜在的问题,但我对此很满意,这是我找到的访问所有我想要的证书数据的最佳方式。其他选项涉及特定于实现的细节,这更多是基于标准的。
https://stackoverflow.com/questions/11288521
复制相似问题