2014-01-24 40 views
2

我有興趣使用TomEE(實現Java EE 6 Web Profile)來構建Web站點(使用Eclipse或NetBeans等工具),因爲以下幾點對我很有吸引力:java的用戶註冊框架

  • OOB數據層完成交易,POJO/JPA避免編寫數據庫層,性能連接池/緩存,樂觀併發
  • MVC的表現層的概念(即JSF)
  • 通信能力到運行在其他JVM實例上的其他Java組件

接下來,我想確定合併一些額外構建塊的可行性,爲典型的面向Web的註冊/登錄機制提供框架。

問題是,我擔心如果我使用Play,Vaadin或Grails等全面的Web框架,我可能會失去太多的靈活性和控制權。不過,我也想避免通過實現完全在我自己通過以下機制來重新發明輪子:註冊時

理想情況下,我想使用可擴展身份驗證/授權機制POJO層完成基本樣本頁面。從我的研究看來,JAAS似乎不會削減它,而且我對Apache Shiro,Spring Security,DeltaSpike或PicketLink等項目是否會推動我向前發展方向或如果這些項目矯枉過正。

有人可以更熟悉java生態系統嗎?請解釋什麼可以彌合Web配置文件的實現和上述功能(即用戶註冊/登錄框架)之間的差距?

回答

3

就我所知,彈簧安全性是一種「低級」安全性:即它用於防止授權不足的用戶訪問Web應用程序資源,例如訪問部分代碼或網頁或其他Web應用程序「資源」。用戶註冊,CAPTCHA你可能自己實現(可能通過採用現有的組件/庫,例如https://stackoverflow.com/a/220452/999264用於CAPTCHA等),並將其與彈簧安全性自身集成。

3

檢查包含Spring安全性擴展的Emmet框架,它具有您提到的幾個功能,但不是全部。如果你決定自己實現一些組件,可能有助於查看他們的代碼。

但是對於Java Spring Security似乎是最廣泛部署的解決方案,因爲它是高度可定製的 - 例如,您可以配置它以將用戶存儲在數據庫或LDAP上,授予基於角色或訪問控制列表的訪問權等等。

我認爲沒有框架提供所有這些構建基塊,但對於用戶註冊例如有外部服務來管理用戶數據庫並以您的名義發送註冊交易電子郵件,這些電子郵件或多或少地保證不會落入垃圾郵箱。

這種服務的一個例子是mailjet

一個去一個完整的堆棧像Vaadin的優點是,這些框架將使用最多的OWASP的最佳實踐爲你,就像把到位CSRF令牌或避免腳本注入適當逃逸等

這有助於彌補靈活性的缺失,這通常比看起來要少。例如,在Spring MVC中,幾乎所有的東西都是可插入的,如果你不喜歡給定的小部件,你可以自定義它並編寫你自己的東西。

2

驗證碼,電子郵件驗證和密碼恢復不是核心安全服務的組成部分,並且更多是附加功能。核心服務是身份驗證,授權和會話管理。

某些方面的區分,這些技術包括:

  • 是否使用特定技術「結合」,你給它

  • 多少定製開發將需要做。

  • 技術可以支持的規模和數量以及將其付諸實現所需的努力。

技術

  • 使用Spring通常意味着你需要在整個春天生態系統到您的項目引進來,它做了很多事情對你和簡化了開發,但它確實意味着一個漂亮與彈簧緊密結合。

  • Apache-Shiro非常強大,它提供了一個非常漂亮的抽象層,它具有鬆散的耦合,它集成了許多其他技術,包括Spring安全性,並提供了與uFIF集成的web ui。

  • PicketLink是一項功能非常強大的技術,具有許多安全功能,但可能不像Shiro或Spring那樣關鍵,如果您認爲您希望安全框架成爲企業級並實現諸如IDP。 Picketlink可能是一個很好的選擇。