2012-07-02 76 views
0

我对最新的Glassfish服务器(3.1.2)上部署的多模块应用程序使用标准容器身份验证。Java EE身份验证,基本或表单AND证书身份验证

我曾经有形式认证为主体的网络模块和HTTP含REST Web服务模块基本身份验证。

现在,这两个模块,我需要能够执行证书认证,但只作为一个选项。某些客户端仍需要能够通过表单/基本身份验证进行登录。

我试图使用JSR-196以截取由反向代理转发证书认证数据。这里的问题是,在Glassfish中,似乎我需要重新实现容器提供的一些帮助,如果我使用JSR-196:在会话,SSO,甚至表单/基本身份验证中存储身份验证...这是Glassfish方式或我的,似乎,但我想要一个混合。所以,我的JSR-196模块现在需要处理证书,基本和表单身份验证以及持久性机制。看起来矫枉过正。

我试过一个比较幼稚的方法,即用形式的认证,并有我的反向代理发送身份验证数据j_security_check。它适用于第一个模块,但是太具体实现,看起来像一个黑客。

我还想象在另一模块做证书认证时,直接在应用服务器(没有反向代理)上,并重定向到一旦被认证原始模块,使用SSO胶水。但glassfish上的sso在具有不同auth类型的模块之间不起作用。

我宁愿使用标准的东西,如果可能的话优雅。另外,我希望我的应用程序使用Java EE安全性,而不是某些第三方库,无论是来自Spring还是其他任何库。

在Glassfish上实现这个选项有哪些选项?

+0

任何人想分享为什么他们给-1? – ymajoros

回答

0

最后,我实现它使用这些组合:

  • 一个JSR-196模块,可以委托认证,以
  • j_security_check风格的登录
  • HTTP基本,如果提供
  • 会话级通过其他选项保存
  • 客户端证书身份验证,在某些情况下
保持令牌

反向代理不用于ssl。我知道潜在的问题,但我对它很满意,这是我发现访问我想要的所有证书数据的最佳方式。其他选项涉及特定于实施的细节,这更多是基于标准的。