我试图了解如何使用 JAAS 保护 Java EE 应用程序。
实际上我了解如何在 EJB 中使用规则,但是,我不了解如何在 Web 层中对用户进行身份验证,例如使用登录表单创建一个简单的 JSF 页面,使用数据库检查给定的用户名和密码,然后在成功案例如何在我的应用程序中为此用户设置委托人。
这样做的常见方法是什么?我希望有尽可能多的独立于 AS 的解决方案。
我试图了解如何使用 JAAS 保护 Java EE 应用程序。
实际上我了解如何在 EJB 中使用规则,但是,我不了解如何在 Web 层中对用户进行身份验证,例如使用登录表单创建一个简单的 JSF 页面,使用数据库检查给定的用户名和密码,然后在成功案例如何在我的应用程序中为此用户设置委托人。
这样做的常见方法是什么?我希望有尽可能多的独立于 AS 的解决方案。
JAAS 不是执行此操作的通用标准。事实上,JAAS 登录模块有点不适合 Java EE 身份验证。完整的 JAAS 模型是为本地运行的 Java 应用程序创建的,将代码库彼此屏蔽(例如,允许从文件系统读取的特定 jar)。
Java EE 服务器很少会运行不受信任的代码,因此 JAAS 提供的大部分功能根本没有被使用。
关于这个主题的两篇非常好的文章如下:
这样做的常见方法是什么?
不幸的是,常见的是使用特定于 AS 的东西。这个“事物”的术语也是特定于 AS 的。它可以被称为“领域”、“安全域”、“区域”、“登录模块”中的任何东西,谁知道他们还叫什么。
我希望有尽可能多的独立于 AS 的解决方案。
幸运的是,在 Java EE 6 及更高版本中还有一种标准方法可以做到这一点,它完全独立于 AS:JASPIC auth modules。
然而,不同的应用服务器并不总是完全支持这一点。当然,它是 Java EE 标准的一部分,意味着供应商必须支持它,但这并不意味着他们按照规范所说的那样实现了所有东西(而是他们只实现了 TCK 测试的内容)。
有关 JASPIC 的更多信息,请参阅我写的以下两篇文章: