2010-02-16 525 views
3

我在我的glassfish服務器上使用gwt,並試圖使我的一些RPC調用通過cookie進行身份驗證。這可能嗎?有沒有任何例子如何編碼?GWT RPC Cookie身份驗證

回答

2

僅取決於Cookie進行身份驗證會使您的網站/服務容易受到跨站點請求僞造/ XSRF/CSRF攻擊 - 請閱讀有關Security for GWT Applications的更多信息。

最好的方法是仔細檢查從cookie獲取的值以及通過其他方式傳輸到服務器的值 - 作爲請求(頭部,自定義字段等)的一部分。

除此之外,還有很多關於這個主題的教程 - 只是搜索Java(servlet)認證 - 它不一定是GWT特定的。 Google Web Toolkit Group也有許多threadsaboutthesubject

0

我假設您使用GWT的RPC servlet來處理客戶端發出的請求。

我想到的一個選擇是在請求到達GWT的servlet之前編寫和配置一個可以檢查cookie的ServletFilter。

0

您可能會重新考慮使用cookie,因爲它是一個潛在的安全漏洞。 爲什麼不把你的通信到HTTPS?

+0

HTTPS不會阻止XSRF攻擊AFAIK,因此您「僅」受到中間人攻擊的保護。而且它有一個額外的怪癖,使得大多數瀏覽器不會**緩存HTTPS請求的內容。此外,與GWT和所有的AJAX的東西,你要麼保持網站HTTP或HTTPS - 混合起來可能會導致一些可怕的警告在某些瀏覽器 - 不是你想展示給你的用戶:) – 2010-02-17 02:06:41

+0

真的......但我正在考慮把整個網站置於HTTPS之下而不是混合它。 – Drejc 2010-02-17 09:36:48

+0

對,然後用戶每次使用該站點時都必須下載整個應用程序(JS文件),可能會抱怨它加載的速度有多慢等。當然,如果這是銀行網站或類似的東西,安全性是優先的數字1和整個網站應該是https。儘管如此,我關於僅cookie認證的觀點仍然存在。 – 2010-02-17 23:32:57

0

你能不能只使用標準的「會話」範圍,即

request.getSession() 

我在GWT應用程序使用的模式是有一個單獨的「老式」登錄形式,建立了會議。然後GWT應用程序的主機頁面在他們成功登錄之後顯示。

如果必需的值不在會話中,那麼用戶沒有登錄。您的服務應該返回一個異常,可能是,指示GWT應用程序重定向到登錄頁面,或顯示錯誤。

+1

每個RPC負載不發送自定義會話標識可能會使RPC服務對XSRF/CSRF攻擊開放 – 2011-12-07 01:14:49