2012-11-15 60 views
1

如果this是在Java EE 6中验证用户的最佳方法之一。JAAS是否真的需要认证?

在认证/用户登录中使用JAAS有什么好的理由吗?谈到包装:

javax.security.auth 

JAAS应用程序到一个简单的web应用程序不是微不足道的,所以这就是为什么我问。这是一个example.

无论如何它可能需要授权。

回答

3

如果您打算依靠容器通过使用@RolesAllowed注释来执行授权,那么答案是肯定的,您将需要JAAS。

至于它是否复杂,它实际上取决于您将使用的LoginModule实现。容器确实带有LoginModule开箱即用的实现,尤其是针对身份存储(如文件,LDAP服务器或数据库)进行身份验证。如果这就是你所需要的,那么你可以使用这些来代替自己的实现。

如果您确实想写一个像Antonio Goncalves所做的LoginModule,您需要了解LoginModule和JAAS的作用。他的模块在认证过程中使用内置于其应用中的CustomerService。该模块简单地通过CDI BeanManager查找CustomerService bean,并将所有认证请求委托给findCustomer(username, password)方法。如果找不到提供的凭证的客户,则会引发LoginException

+0

PicketBox是开箱即用的Jboss LoginModule实现吗? – jacktrades

+2

@jacktrades Picketbox在JBoss AS7中可用作模块(查看JBOSS_HOME/modules/org/picketbox)。如果您正在编写自定义安全模块,[this](https://community.jboss.org/wiki/JBossAS7SecurityCustomLoginModules)将有所帮助。但是,如果您在AS7中寻找标准模块,[this](https://community.jboss.org/wiki/JBossAS7SecurityDomainModel#Security_Domains)是一个很好的参考。 AS7中的标准登录模块由'org.picketbox' JBoss模块提供。 –

+2

>'通过使用@RolesAllowed批注强制执行授权,那么答案是肯定的,您将需要JAAS。' 这并不完全正确。实际上,它并不是真的;)Java EE中没有任何东西需要使用JAAS。 '@ RolesAllowed'是一个常见的注释,目前只有EJB给出了含义。如何使用EJB进行身份验证或者留给容器,这绝对不必使用JAAS,或者从SOAP或Servlet传播认证,而标准Java EE中的认证可以使用JASPIC,而JASPIC也不需要使用JAAS。 –