Java JAAS-如何在web层对用户进行身份验证?

Java JAAS-如何在web层对用户进行身份验证?,java,jakarta-ee,jaas,jaspic,Java,Jakarta Ee,Jaas,Jaspic,我试图理解如何使用JAAS保护JavaEE应用程序 实际上,我了解如何在EJB中使用规则,但是,我不了解如何在web层中验证用户,例如,创建一个带有登录表单的简单JSF页面,使用DB检查给定用户名和密码,如果成功,如何在我的应用程序中为该用户设置主体 通常的做法是什么?我希望有尽可能多的独立解决方案。JAAS不是实现这一点的通用标准。事实上,JAAS登录模块有点不适合JavaEE身份验证。完整的JAAS模型是为本地运行的Java应用程序创建的,它将代码库彼此屏蔽,例如,允许从文件系统读取特定的j

我试图理解如何使用JAAS保护JavaEE应用程序

实际上,我了解如何在EJB中使用规则,但是,我不了解如何在web层中验证用户,例如,创建一个带有登录表单的简单JSF页面,使用DB检查给定用户名和密码,如果成功,如何在我的应用程序中为该用户设置主体


通常的做法是什么?我希望有尽可能多的独立解决方案。

JAAS不是实现这一点的通用标准。事实上,JAAS登录模块有点不适合JavaEE身份验证。完整的JAAS模型是为本地运行的Java应用程序创建的,它将代码库彼此屏蔽,例如,允许从文件系统读取特定的jar

JavaEE服务器很少运行不受信任的代码,所以JAAS提供的许多功能根本没有被使用

以下是关于此主题的两篇非常好的文章:

通常的做法是什么

不幸的是,常见的是使用AS-specific。这件事的术语也很具体。它可以从一个领域、安全域、区域、登录模块调用任何东西,谁知道他们还调用了什么

我希望有尽可能多的独立解决方案

幸运的是,在JavaEE6及更高版本中,也有一种标准方法可以做到这一点,它是完全独立的:JASPIC auth模块

然而,不同的应用服务器并不总是完全支持这一点。当然,作为JavaEE标准的一部分,这意味着供应商必须支持它,但这并不意味着他们实现了规范中所说的一切,相反,他们只实现了TCK测试的目的

有关JASPIC的更多信息,请参阅我撰写的以下两篇文章:


JAAS不是实现这一点的通用标准。事实上,JAAS登录模块有点不适合JavaEE身份验证。完整的JAAS模型是为本地运行的Java应用程序创建的,它将代码库彼此屏蔽,例如,允许从文件系统读取特定的jar

JavaEE服务器很少运行不受信任的代码,所以JAAS提供的许多功能根本没有被使用

以下是关于此主题的两篇非常好的文章:

通常的做法是什么

不幸的是,常见的是使用AS-specific。这件事的术语也很具体。它可以从一个领域、安全域、区域、登录模块调用任何东西,谁知道他们还调用了什么

我希望有尽可能多的独立解决方案

幸运的是,在JavaEE6及更高版本中,也有一种标准方法可以做到这一点,它是完全独立的:JASPIC auth模块

然而,不同的应用服务器并不总是完全支持这一点。当然,作为JavaEE标准的一部分,这意味着供应商必须支持它,但这并不意味着他们实现了规范中所说的一切,相反,他们只实现了TCK测试的目的

有关JASPIC的更多信息,请参阅我撰写的以下两篇文章: