2014-04-24 50 views
8

我目前正在研究基於Java EE 7,PostgreSQL和應用服務器GlassFish 4的Web應用程序。 我需要實現基於表單的身份驗證,並確保某個URL安全:Java EE 7基於表單的身份驗證

  • 用戶和角色/組(不管他們被稱爲)存儲在數據庫中。
  • 我想我的應用程序是爲「標準」成爲可能(即我目前使用JSF和JPA,和如春沒有其他的框架,支柱...)

經過一番研究,我發現, Java EE提供了稱爲JASPIC的標準認證機制。所以,我將我的研究重點放在了JASPIC上,並且我閱讀了多個Stackoverflow Q/A和Arjan Tijms寫的那些文章(在沒有他的答案或評論的情況下,幾乎不可能找到與Java EE相關的Stackoverflow Q/A,這要感謝他路):

我的問題是:將JASPIC讓我做我需要什麼(形式認證+網址限制與角色),並且它值得一提rt使用它? 我的意思是:使用其他機制可能更安全,更容易。

Arjan Tijms還說,不管是否使用JASPIC都是「一種雞與雞蛋問題」,如果JASPIC可以安全使用(它不會產生比解決問題更多的問題),無論數量多少我需要寫的代碼,我真的想成爲「第一批雞」之一。

+2

安全性是爲了增加安全性,而不是強制執行它。你只是像系統運行環境中最薄弱的環節一樣安全,通常最脆弱的環節是人。在我誠實的意見中,你需要知道的一切,以便在你發佈的第一個(美妙的)鏈接中做出決定。感謝您順便分享這些內容。除此之外,還有關於安全性的JEE教程頁面:http://docs.oracle.com/javaee/6/tutorial/doc/gkbaa.html – Gimby

回答

-4

我做不知道JASPIC但我可以建議你看一看的shiro framework

它讓你做幾乎一切您根據您的文章以最低配置需要的。

+1

我通常會避免使用像Shiro這樣的框架,除非我計劃控制整個應用程序認證/授權僅限於Web層。主要是因爲目標平臺不支持整個Java EE堆棧。 –

-4

對於基於表單的認證和授權,您需要JAAS。通過follwing url- linK

+1

事情在Java EE中更加微妙,你應該看看[這篇文章](http://arjan-tijms.omnifaces.org/2014/02/jaas-in-java-ee-is-not-universal的.html)。 – bdulac

3

我使用JASPIC進行身份驗證,但JASPIC有一個限制,您需要與之對抗(如果您想要標準的東西)。您僅限於在Java EE 7 API之外沒有依賴關係。這意味着訪問需要驅動程序的JDBC資源不是標準中明確規定的功能。

在我的OpenID Connect implementation中,我使用Google作爲我的安全商店,該商店還向我顯示了Google登錄表單。這是使用JASPIC的一個更大的例子。

您自己可以將EJB公開到全局名稱空間並使用InitialContext來獲取EJB。會有一些代碼重複,因爲您必須在兩處複製EJB遠程接口代碼,並確保serialVersionID在兩個位置都相同。 EJB可用於連接到JPA資源以獲取授權數據。

使用EJBs,因爲您可能會想到的另外兩個選項是REST和SOAP,它們會暴露Web端口上的某些內容,並且需要一些額外的配置以防止未經授權的訪問或要求將它們置於不同的系統上。

我爲了學習而創建的一個簡單的JASPIC實現是HTTP Header JASPIC module,它旨在與更復雜的系統(如SiteMinder)集成。

+0

該示例實現非常棒! :) –

相關問題