2013-05-06 42 views
2

我目前正在使用liferay portlets。 Spring渲染層(在jsp頁面中)使用了Spring安全性。但是,這並不安全,因爲我的調度控制器和服務沒有任何安全/授權檢查。用彈簧安全保護liferay portlets

在我的應用程序中,Spring-MVC控制器接收請求並傳遞到服務層。服務層構建結果並將其傳遞給JSP頁面。在jsp頁面中,我們擁有使用spring-security taglibs的安全授權。

我想了解以下內容:

關於Portlet的執行授權
  1. 最佳實踐。
  2. 在調度層或服務層實現安全性是更好的選擇嗎?
  3. 如何實現調度層或服務層的安全性?

請考慮我在我的應用程序基礎上的安全性。

謝謝!

回答

1

我最喜歡的答案在這裏匹配:「它取決於」。

下面是它取決於:

的Liferay默認爲*本地服務是沒有任何權限檢查 - 例如如果你有權訪問API,你可以做任何你想做的事情。但是,遠程服務應該在將服務的實際執行委託給本地服務之前檢查權限。

如果您想要使用Liferay的permissionChecker(這很容易獲得並且可以在運行時配置),您應該在非本地服務方法中執行此操作。我傾向於推薦這一點,因爲您可以使用Liferay's permissioning system - 而且您已擁有由Liferay管理的用戶身份,角色,會員等等。創建一個自定義角色,授予自定義權限,並且您可以在運行時配置所有內容。其次,雖然您一定要檢查後端服務中的權限,但您可能需要再次在UI層上執行此操作:如果用戶不被允許操作某個對象,則您不希望顯示按鈕,表明他們可以更改它,只是爲了獲得「權限被拒絕」的答覆。這就是說,我從來沒有將春天安全(特別是taglibs)與Liferay的許可系統綁定在一起。

+0

謝謝奧拉夫。正如我從你的回答中瞭解到的,你正在談論liferay服務。如果我錯了,請糾正我。我有興趣使用spring security annotatin獲取一些反饋信息,這違反了我的本地應用程序服務。 spring-portlet的安全性已經在了。你有什麼想法,我們可以在調度層使用它嗎? – sajjad 2013-05-07 09:27:47

+0

「這取決於」......你想讓他們勾住Liferay的許可系統嗎?或者它們應該與那個完全分開。如果你想要他們鉤住Liferay的許可,我不能提供指針(正如我所說的)。如果您希望它們與Liferay的權限系統完全分離,那麼您可以像以前那樣使用它們。然而,這也可能是你確切的問題,我只是用Liferay的權限打開另一個可能性。 – 2013-05-07 09:48:33

+0

謝謝奧拉夫。其實我希望他們能夠融入Liferay的權限。 – sajjad 2013-05-07 12:11:08