Java EE身份验证,包括基本或表单AND证书身份验证

时间:2012-07-02 06:10:30

标签: java authentication java-ee glassfish certificate

我正在为最新的Glassfish服务器(3.1.2)上部署的多模块应用程序使用标准容器身份验证。

我曾经对主要网络模块进行表单身份验证,对包含其他Web服务的模块进行http基本身份验证。

现在,对于这两个模块,我需要能够执行证书身份验证,但仅作为选项。有些客户仍然需要能够通过表格/基本身份验证登录。

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

我尝试了一种更天真的方法,即使用表单身份验证并让我的反向代理将身份验证数据发送到j_security_check。它适用于第一个模块,但实现特定,看起来真的像黑客。

我还想象在另一个模块中直接在应用服务器上进行证书认证(没有反向代理),并使用sso作为粘合剂,在经过身份验证后重定向到原始模块。但是对于具有不同auth类型的模块,glassfish上的sso将不起作用。

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

在Glassfish上实现此功能有哪些选择?

1 个答案:

答案 0 :(得分:0)

最后,我使用以下方法实现了它:

  • 可以将身份验证委派给
  • 的JSR-196模块
  • j_security_check样式登录
  • http basic,如果提供
  • 其他选项保存的会话存储令牌
  • 客户端证书身份验证,在某些情况下

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