Java EE 7基于表单的身份验证

时间:2014-04-24 09:56:51

标签: java java-ee authentication standards jaspic

我目前正在开发基于Java EE 7,PostgreSQL和应用服务器GlassFish 4的Web应用程序。 我需要实现基于表单的身份验证,并确保知道以下内容的URL:

  • 用户和角色/组(无论它们被调用)都存储在数据库中。
  • 我希望我的应用程序尽可能“标准化”(即我目前正在使用JSF和JPA,而没有像spring,struts这样的其他框架......)

经过一番研究,我发现Java EE提供了一种名为JASPIC的标准认证机制。因此,我将研究重点放在JASPIC上,并阅读了多篇Stackoverflow Q / A和Arjan Tijms撰写的文章(如果没有他的回答或评论,几乎不可能找到与Java EE相关的Stackoverflow Q / A,多亏了他方式):

我的问题是:JASPIC是否允许我做我需要的事情(表单身份验证+带角色的URL限制),是否值得努力使用它? 我的意思是:使用其他机制可能更安全,更容易。

Arjan Tijms还说,无论是否使用JASPIC都是“一种鸡蛋问题”,如果JASPIC可以安全使用(它不会产生比它解决的更多问题),无论数量多少我需要写的代码,我真的想成为“最早的鸡之一”。

3 个答案:

答案 0 :(得分:3)

我正在使用JASPIC进行身份验证,但JASPIC有一个您需要应对的限制(如果您想要标准的话)。您只能在Java EE 7 API之外没有依赖项。这意味着访问需要驱动程序的JDBC资源不是标准中明确规定的功能。

在我OpenID Connect implementation我使用Google作为我的安全商店,它还向我提供了Google登录表单。这是使用JASPIC的一个更大的例子。

对于您自己,您可以将EJB公开给全局命名空间,并使用InitialContext来获取EJB。存在一些代码重复,您必须在两个位置复制EJB远程接口代码并确保serialVersionID在两者上都相同。 EJB可用于连接JPA资源以获取授权数据。

使用EJB,因为您可能会想到的其他两个选项是REST和SOAP,它们会在您的Web端口上暴露某些内容,并且需要一些额外的配置来防止未经授权的访问或要求将它们放在不同的系统上。

我想要学习的一个简单的JASPIC实现是HTTP Header JASPIC module,它旨在与更复杂的系统(如SiteMinder)集成。

答案 1 :(得分:-4)

我不知道JASPIC,但我建议你看看shiro framework

它让你可以根据你的帖子以最少的配置完成你需要的所有事情。

答案 2 :(得分:-4)

对于基于表单的身份验证和授权,您需要JAAS。通过以下网址 - linK