JavaEE7基于表单的身份验证
我目前正在开发一个基于JavaEE7、PostgreSQL和应用服务器GlassFish 4的web应用程序。 我需要实现基于表单的身份验证,并确保某些URL的安全,因为我知道:JavaEE7基于表单的身份验证,java,jakarta-ee,authentication,standards,jaspic,Java,Jakarta Ee,Authentication,Standards,Jaspic,我目前正在开发一个基于JavaEE7、PostgreSQL和应用服务器GlassFish 4的web应用程序。 我需要实现基于表单的身份验证,并确保某些URL的安全,因为我知道: 用户和角色/组(无论它们被称为什么)都存储在数据库中 我希望我的应用程序尽可能“标准化”(也就是说,我目前使用的是JSF和JPA,没有其他框架像spring、struts……) 经过一些研究,我发现JavaEE提供了一种称为JASPIC的标准身份验证机制。因此,我将研究重点放在JASPIC上,阅读了多篇Stacko
- 用户和角色/组(无论它们被称为什么)都存储在数据库中
- 我希望我的应用程序尽可能“标准化”(也就是说,我目前使用的是JSF和JPA,没有其他框架像spring、struts……)
Arjan Tijms还说,无论是否使用JASPIC都是“一种鸡和蛋的问题”,如果JASPIC可以安全使用(它不会产生比它解决的问题更多的问题),无论我需要编写多少代码,我都真的想成为“第一批鸡之一”。我不知道JASPIC,但我可以建议您看看
它让您可以根据帖子以最少的配置完成几乎所有需要的工作。对于基于表单的身份验证和授权,您需要JAAS。浏览下列网址-
我正在使用JASPIC进行身份验证,但是JASPIC有一个限制,您需要克服(如果您想要标准的东西)。您仅限于在JavaEE7API之外没有依赖项。这意味着访问需要驱动程序的JDBC资源不是标准中明确规定的功能 在我的博客中,我使用谷歌作为我的安全商店,这也给了我谷歌登录表单。这是使用JASPIC的一个更大的例子 对于您自己,您可以将EJB公开到全局名称空间,并使用InitialContext获取EJB。会有一些代码重复,因为您必须在两个位置复制EJB远程接口代码,并确保两个位置上的SerialVersionID相同。EJB可用于连接到JPA资源以获取授权数据 使用EJB,因为您可能想到的其他两个选项是REST和SOAP,它们将在web端口上公开某些内容,并且需要一些额外的配置来防止未经授权的访问,或者需要将它们放置在不同的系统上
我创建了一个简单的JASPIC实现,用于与更复杂的系统(如SiteMinder)集成。安全是为了提高安全性,而不是强制执行。您的安全性仅与系统运行时环境中最薄弱的环节相同,通常最薄弱的环节是人。在我看来,你需要知道的所有事情都在你发布的第一个链接中。谢谢你的分享。除此之外,还有关于安全性的JEE教程页面:该示例实现非常出色!:)我通常避免使用Shiro之类的框架,除非我计划只在web层控制整个应用程序的身份验证/授权。主要是因为目标平台不支持整个JavaEE堆栈。