2012-09-11 34 views
0

我想了解Spring Security如何在三層架構中工作。在三層架構中使用Spring Security

假設系統的組成如下:
WEB < - >APP < - >DB

而且該用戶在DB層限定。

我該如何在應用程序中實現它?
從我的理解,我應該做到以下幾點:

  1. 創建於WEB層我自己的身份驗證提供程序。
  2. 身份驗證提供程序將調用APP層上的服務,以根據數據庫實際驗證憑據。
  3. 用戶通過之後在WEB層Spring Security的模塊,有沒有更多的認證,每WEB - >APP調用實際上是未經驗證的

最後一顆子彈對我沒有意義 - 所以我假設我錯過了文檔中的某些東西。

我的問題 - 這是在三層web應用程序中實現安全性的春季方法嗎?或者,還有更好的方法?

回答

0

這是非常標準的。將大部分驗證邏輯保留在APP中,但WEB成爲客戶端/提供者。

呼叫完成後,進一步的呼叫是而不是未經認證,使用會話保留認證。只要你聲明所有的端點需要在你的安全xml中進行認證,那麼除非用戶已經被認證,否則沒有端點可以被訪問(並且如果它們不是或者它們的登錄已經過期,它們將被踢出指定的路徑) 。

而且我還會爭辯說,對於像這樣的橫切關注而言,在3層方面考慮並不適用。 DB這一塊是無關緊要的,另一個部門是爲了可重用性的目的,這相當於存儲庫和集成的分離。

+0

從我的理解我保護URL在SpringSecurity - 所以我只在'WEB'層。 我不明白你的答案應該是什麼樣的應用程序的工作方式。 – RonK

+0

我在這裏添加了'DB',因爲在我的情況下,用戶保留在那裏,所以'APP'層必須訪問它來驗證用戶 - 但你是對的 - 這與問題無關。 – RonK

+0

這些URL將成爲您的應用程序的訪問點,因此也是您可以保護它的地方。也許令人困惑的是,我認爲端點是指URL端點(沒有SOA影響)?任何其他訪問應用程序的方式都可以根據需要進行保護,但如果URL是唯一的方式,那麼這是您唯一需要擔心的方式。 –