2012-03-04 45 views
2

我有GWT應用程序,我想用spring security來保護它。我有我的自定義彈出窗口,其中基於UI Binder的登錄形式被放置。我想使用RPC方法將憑證發送到服務器,然後根據數據庫對用戶進行身份驗證。那可能嗎?使用自定義登錄對話框的GWT和Spring安全集成

回答

2

是的,這是可能的,但你必須考慮,GWT應用程序被編譯成javascript並作爲整個包發送到客戶端。因此,不能使用SI來限制不從服務器檢索數據的'靜態'位置,因爲所有信息從一開始就在客戶端可用。但是,所有請求工廠服務(或您使用的其他協議)都可以使用Spring Security進行保護。如果您使用要求在工廠,你必須做兩件事情:

  1. 實現安全機制使用Spring Security的任何其他應用程序 - 你必須公開j_spring_security_check端點允許用戶進行身份驗證和服務水平添加適當的SI註釋(如果它需要認證/授權設置)
  2. 覆蓋DefaultRequestTransportcreateRequestCallback(RequestTransport.TransportReceiver receiver)方法爲了能夠處理403/401服務器響應。
  3. 介紹將用戶提供的憑證發送到j_spring_security_check的登錄頁面。您可以輕鬆使用GWT RequestBuilder來做到這一點。

就是這樣!

編輯: 當然,春天必須知道你正在保護的服務(必須存在於其容器內)。

+1

因此,如果我理解的很好,我必須將憑據發送到/ appName/j_spring_security_check URL並使用@Secured註釋來保護RPC調用? – Peter 2012-03-04 21:00:05

+0

對!因此,訪問受限的所有信息必須存儲在服務器端並通過服務公開 - 您無法在JavaScript中「硬編碼」它。 – 2012-03-04 21:13:14