0

我需要一些保護單頁多租戶saas應用程序的幫助。確保SPA多租戶SaaS應用程序

問題: 1)什麼是實現它的最佳方式?我正在嘗試使用angularjs,spring mvc和REST構建應用程序。 2)這可以使用Spring Security來完成嗎?任何創建登錄頁面和保護REST的例子都會有幫助嗎?

我已經找到了與Spring JPA(http://krams915.blogspot.com/2012/01/spring-security-31-implement_3065.html)實施春季安全的樣本,但它不是SPA和SaaS。

我明白這是一個非常寬泛的問題,但我是SPA,REST和SaaS的新手,所以任何指針都會有所幫助。

謝謝...

回答

0

我已經參與了SPA和安全方面的兩個項目。最後一個是GWT + Spring Security。我相信你可以一起使用Angular和Spring Security。

不幸的是,Spring Security AFAIK沒有內置的配置參數'我們處於SPA模式'。因此,Spring Security方面的一些調整/配置將是必要的。示例: 想象一下,在登錄期間,您將調用內置到Spring Security登錄控制器中。在成功驗證的情況下,默認情況下,用戶將被重定向到索引頁面,在失敗的情況下,它將被重定向到相應的錯誤頁面。對於標準Web應用程序來說,這對於SPA Web應用程序來說並不那麼有用。在SPA的情況下,您需要檢測AJAX調用並打印帶成功案例的用戶名/角色的JSON,或發送401代碼失敗(然後在JS中檢測401並顯示相應的錯誤)。您可以使用Spring Security的相應擴展點來執行此操作:AuthenticationSuccessHandlerAuthenticationFailureHandler

有些另一件事來調整:在默認情況下後會話過期的用戶將被重定向到登錄頁面(和SPA應用程序接收登錄頁上到下一個AJAX調用的響應)。

展望我的個人經驗一般指南將如下所示:登錄後將角色列表加載到JS中。用它在UI端顯示/隱藏相應的組件。 也在服務器端應用相同的限制列表。爲了確保用戶不在瀏覽器中編輯JS(儘管在某些中等大小的應用程序縮小了JS的情況下,它將會非常複雜)。在服務器端,你必須選擇之間:

  1. 安全網址的AJAX調用
  2. 安全上的一些Java方法。

我更喜歡第二個(服務上的安全業務方法)。我認爲它更方便,因爲我們通常希望獲得安全的業務操作,而不是某些端點。作爲優勢,您將能夠通過其他協議公開您的業務邏輯,並且安全性已經存在。從另一方面,我可以想象一些業務需求對不同的端點/協議擁有不同的權限。所以這取決於你的實際情況。

Lage size JS應用程序必須拆分成模塊。爲了減少直接的依賴關係,最好使用直接調用的事件在模塊之間進行通信。有關Addy Osmany關於如何在這些文件中進行安全性的有趣想法。我沒有找到它的好鏈接,也許thisthis將是有益的(搜索「權限」)。

隨時發佈任何問題。祝你好運。