【问题标题】:Java EE authentication, both basic or form AND certificate authenticationJava EE 身份验证,基本或表单和证书身份验证
【发布时间】:2012-07-02 06:10:30
【问题描述】:

我正在对部署在最新 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 上实现此功能的选项有哪些?

【问题讨论】:

  • 有人想分享他们为什么给 -1 吗?

标签: java authentication jakarta-ee glassfish certificate


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2013-10-30
    • 1970-01-01
    相关资源
    最近更新 更多