2012-11-29 47 views
0

我有一個服務於網站內容的java servlet,它使用表單身份驗證來登錄用戶並讓他們訪問內容。每當用戶訪問受保護的資源時,他都會被重定向到一個登錄表單,用於將用戶名/密碼發佈到Web服務器中的j_security_check路徑。其餘部分由java安全機制處理,它們生成用戶會話,並回應並將其重定向到他嘗試訪問的初始資源。到現在爲止還挺好。Java Servlet安全手冊驗證請求服務器端

我想要做的是通過以下方式爲未登錄用戶提供訪問資源:GET www.myserver.com/anotherLoginMethod=aasdfJKL其中aasdfJK是由服務器生成的哈希。服務器保持與用戶帳戶的關聯,並且當用戶發送GET請求時,我需要:

1)獲取anotherLoginMethod參數值。 2)檢索關聯的用戶帳戶(憑證)。 3)自動登錄用戶,就好像他正在用j_security_check處理程序的用戶名/密碼進行POST。

這可能嗎?

我嘗試在過濾器中使用HttpServletRequest的登錄和身份驗證方法,但目前爲止沒有成功。

回答

0

它比較簡單。您需要決定 1.您打算如何保持散列值及其與用戶的關聯? 2.你打算如何給用戶散列?確保安全對這一步至關重要。

一旦你完成了這個,你可以編寫一個servlet過濾器來攔截這個請求,或者你可以在servlet本身擁有邏輯,獲得與Hash值關聯的用戶,生成一個會話,就好像用戶有成功登錄並重定向到所需的URL。瞭解與這種方法相關的安全問題很重要。

+0

聽起來像一種方式來做到這一點。我的會話雖然有多個屬性,我需要手動設置,如果我按照這種方式。其中一些來自我使用的過濾器(例如,Jetty的DoSFilter使用會話來跟蹤狀態)。另外,每個供應商的Servlet實現是否以不同的方式處理會話屬性?原因我對我必須設置HttpSession來模擬Java安全機制的功能有些困惑。 –