0

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

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

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

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

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

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

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

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

4

1 回答 1

0

最后,我使用以下组合实现了它:

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

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

于 2012-08-27T06:24:35.670 回答