2009-06-05 44 views
0

我試圖用JETTY支持單一登錄,並且我們有2個子域運行webservers,這些子域將通過Jetty's SSO support支持單一登錄。支持Jetty上的JSESSIONID會話cookie域的單一登錄更改域

account.test.com app.test.com

我們有一個設置爲* .test.com,但支持註銷我需要確保我的碼頭服務器在運行SSOSession餅乾app.test.com有JSESSIONID cookie重置。

我正在使用FormAuthenticator的Jetty JAAS並重寫SSORealm來支持在調用FormAuthenticator時驗證SSOSession cookie。

我希望能夠讓account.test.com允許用戶在那裏登錄,這會導致它使app.test.com中使用的JSESSIONID cookie失效。

我可以做的一個解決方案可能會更正確的是檢測到SSOSession cookie的變化,並使我的服務器上的JSESSIONID無效。

回答

0

我對Jetty或JSESSIONIDs的工作方式一無所知,但聽起來您想將JSESSIONID的有效性與特定的SSOSession cookie綁定。

一種可能性 - 在app.test.com上創建新會話時,除了新的JSESSIONID,在域app.test.com中設置一個新的cookie說SSOSig = MD5(JSESSIONID + SSOSessionCookie + secret)。

當用戶與app.test.com交互時,服務器將接收JSESSIONID,SSOSig和SSOSessionID。如果由於在account.test.com上登錄而更改了SSOSessionID,那麼您將收到JSESSIONID,SSOSig和SSOSessionID'。現在您嘗試驗證SSOSig將失敗,因爲MD5(JSESSIONID + SSOSessioID'+ secret)!= SSOSig,此時您可以使JSESSIONID失效。