2016-05-23 84 views
0

迄今爲止,我所見過的所有Java EE授權技術都只針對視圖層 - 主要基於JSF。您基本上限制對某些URL模式或JSF組件的訪問。基於Java EE的基於服務的安全

但是,我寧願在服務上有我的安全層。我的層看起來像這樣:

  • 視圖(XHTML + JSF支持bean/RESTful Web服務)
  • 服務
  • 實體和業務邏輯
  • 的DAO

由於服務是我業務邏輯的代理,並且不包含任何邏輯,我想用它們來訪問控制。這樣我就不需要單獨爲每個視圖技術實現安全性,也不需要注意URL模式(這些模式很難維護)。

我的首選解決方案是對服務上的類或方法的註釋。如果一些視圖代碼試圖在未經許可的情況下訪問它們,它會得到一個異常(該異常被處理並應轉發到登錄表單)。

有什麼這樣的我可以使用?

回答

4

我的首選解決方案是對服務上的類或方法的註釋。如果一些視圖代碼試圖在未經許可的情況下訪問它們,它會得到一個異常(該異常被處理並應轉發到登錄表單)。

有什麼這樣的我可以使用?

是的。你已經熟悉的是所謂的「應用程序級」安全性,這確實很常見。但是Java EE早已提供了內置的聲明機制作爲替代或輔助;這些可以在Web應用程序級別或組件級別上運行。這些細節在這裏描述的太廣泛了,但Java EE教程有三章介紹它們。你可能會想從the overview開始。

在一個非常高的水平,

  • 聲明安全要求歷來被部署描述符中表示。細節因要保護的組件或應用程序的類型而異。

  • 由於至少Java EE 6,一些安全聲明也可以通過組件源中的註釋進行。

  • 用戶認證和授權的主要內置機制適當地爲Java Authentication and Authorization Services(JAAS)。這實際上是一種Java SE技術,因此您也可以將其用於常規應用程序。如果您曾經使用Solaris的/ Linux的可插入驗證模塊(PAM)子系統,那麼JAAS會對概念感到熟悉。

  • 一些Java EE容器和一些應用程序框架提供了它們自己的安全機制;如果你的情況允許你考慮這樣的事情,那麼值得看看。

+0

''用戶認證和授權的主要內置機制是[J](JAAS).' 否;認證和授權由單個規範的安全模型提供,其中主要使用的(Servlet,EJB)既不是「構建」在頂層,也不是強制甚至不建議其實現依賴於JAAS。如果他們這樣做,這是一個實現細節,Java EE應用程序開發人員不需要關心。如果OP需要額外的功能,則可以使用Java EE特定的標準SPI(JASPIC,JACC)。 – Uux