2012-11-15 59 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。 –