我正在整合Rails和我公司的SSO系統。我的服務器上安裝並啓用了SiteMinder Apache模塊。Rails會話和SiteMinder/SSO
Rails應用程序檢查before_filter中的請求對象以確定用戶是否已通過SSO進行身份驗證。在找到所需的變量後,我的應用程序會將從SSO返回的用戶標識與其內部的用戶帳戶進行匹配,然後對該用戶進行身份驗證(使用ActiveRecord會話存儲進行平穩身份驗證)。
我的問題是這樣的:成功登錄後使用這種方法,在幾個頁面值得點擊後,我突然丟失我的Rails會話,並因此我的應用程序重新認證(我回到了主頁)。
這不是CSRF保護的結果,因爲它:
- 同時出現在我的應用程序的測試和生產環境(和它在默認情況下,測試環境關閉),並
- 無論請求類型如何,看起來都是隨機的:AJAX,GET和POST請求都導致了這種行爲。
即使我禁用是基於其SSO ID自動登錄的用戶,只是打在我的應用程序的舊登錄頁面(通過SSO認證後)的代碼,我注意到,每隔一段時間一個出現我瀏覽器cookie中的新會話ID值。
因此,當我打開我的Apache SSO模塊時會話正在重置。否則,一切都很好,很棒。是什麼賦予了?
我監視我的Rails會話cookie的內容,在Firefox,而多次擊中頁面。 Cookie **的內容確實發生了變化,因此此時我想知道是什麼原因導致Rails決定重置Cookie。不同的起源IP?如果請求看起來「被篡改」(雖然我不認爲SSO模塊正在篡改我的Rails會話cookie的_contents_)? 謝謝你的建議。我已經將這個問題提交給SiteMinder人員,並且沒有骰子。 – 2012-03-29 14:41:51