2010-02-10 67 views
4

由於EJB授權對我的需求太有限,我想將Spring Security與EJB一起使用。對於身份驗證,我也想使用Spring Security。問題是,如果我可以在EJB中使用Spring Security上下文。使用EJB的Spring安全性

場景:

  • 用戶與servlet通信
  • 認證通過Spring Security的
  • 的servlet與EJB通信
  • 的EJB可以與其他EJB
  • 與安全檢查交流EJB攔截器或直接在EJB方法中

安全上下文(通常保存在線程本地對象中)是否會通過servlet和ejb層傳播,以便我可以將其用於安全檢查?

回答

0

如果你在一個集羣中操作,或者EJB在不同的服務器上運行,那麼每個服務器(當然)都會運行它自己的線程,所以傳播不會發生。

如果他們都在同一臺服務器上,那麼他們可能會,但我認爲這是供應商的依賴,除非您使用本地而不是遠程接口。

1

您將能夠訪問Spring的安全上下文,只要不涉及遠程調用,但你不能夠直接使用任何的Spring Security的需要對象的代理聲明的安全功能。

你可能使用Spring bean的從你的servlet層(實現相同的接口作爲EJB,以及委託給他們),並應用安全這些。如果您願意的話,這也可以讓您從EJB遷移出去。

另一種選擇是考慮Spring Security的AspectJ支持,它應該支持EJB。

+0

什麼是聚類Spring應用程序? – deamon 2010-02-10 21:38:53