Java JSF认证
我正在开发一个JavaEE应用程序(JSF2+richfaces+Facelets+Tomcat)。 使用JSF执行身份验证的最佳方式是什么? 还是我应该自己做呢?去做吧 就是如何将它与JSF集成 编辑:Java JSF认证,java,authentication,web-applications,jsf,jsf-2,Java,Authentication,Web Applications,Jsf,Jsf 2,我正在开发一个JavaEE应用程序(JSF2+richfaces+Facelets+Tomcat)。 使用JSF执行身份验证的最佳方式是什么? 还是我应该自己做呢?去做吧 就是如何将它与JSF集成 编辑: 人们通常在以下两者之间进行选择(无特定顺序): JAAS(即Java/JavaEE默认安全框架) 春季安全性 定制安全性 我从未使用过SpringSecurity,但文档非常丰富,因为时间限制,我放弃了尝试一次。JAA的优点是简单,并且可以使用Tomcat开箱即用 我也见过在JAAS之上构建的
人们通常在以下两者之间进行选择(无特定顺序): JAAS(即Java/JavaEE默认安全框架)
春季安全性
定制安全性
我从未使用过SpringSecurity,但文档非常丰富,因为时间限制,我放弃了尝试一次。JAA的优点是简单,并且可以使用Tomcat开箱即用 我也见过在JAAS之上构建的自定义安全性 您真正需要做的是找出您在应用程序中特别需要什么,并检查哪个框架更适合您的需要
在不了解您的业务需求的情况下,如果您只需要身份验证(用户登录),我会说JAAS是最简单的方式,因为它不会侵入应用程序,如果您还没有使用它,您就不需要添加Spring依赖项。JBoss Seam将EJB3、Facelets、JSF和hibernate集成得非常好。还提供数据验证和一些安全功能。如果你使用它的所有功能,它真的很甜。如果你试着从中挑选某些东西,那么它仍然很酷,但是你有一些解决办法。但我对我所看到的SEAM印象深刻。
除了上述框架之外,还有SEAM安全性,它通过扩展与CDI集成得很好。
< P>我认为列奥纳多是正确回答的,但是你也可以考虑全企业的安全性。配置起来有点复杂,但好处是巨大的。它还支持从LDAP到NTLM的大量现成的身份验证机制。CAS还提供自定义身份验证的扩展 如果您选择使用JavaEE容器,并且希望使用基于表单的身份验证,那么我已经发布了几个示例,用于JSF1.2和2.0以及j_安全检查此外,Servlet 3.0 API通过API提供基于容器的登录和身份验证。您可以尝试Apache Shiro,它提供身份验证、授权和许多其他功能。对于简单身份验证,一种非常简单的方法是使用JSTL检查模板中的有效用户对象,如果没有,则显示登录表单。 对于exmaple,假设您的模板是
webapp/WEB-INF/templates/default.xhtml
,在模板中:
<html...>
.
.
<h:body>
<c:if test="#{mbSecurity.validUser}">
.
. authenticated template sections goes here
.
</c:if>
<c:if test="#{not mbSecurity.validUser}">
<ui:include src="/WEB-INF/inc/login-form.xhtml" />
</c:if>
</h:body>
</html>
.
.
.
. 已验证的模板部分位于此处
.
优点:零依赖性和零配置,如果会话过期,在登录后,用户将返回到他所在的原始页面。我使用的是JSF 2,但这个项目是针对JSF 1.2FYI的:拼写为“身份验证”而不是“身份验证”.请注意,JAAS本身不是Java EE默认安全框架。JAAS是java SE中发现的一个安全基础,但它没有详细说明它如何与java EE安全概念相对应,而这些概念实际上有时是完全不同的。有关更多详细信息,请参见: