2014-10-30 88 views
1

我們有一個2節點的JBoss EAP 6.3集羣。我們還啓用了SSO。SSO - JBoss 7.x和JSF

問題是,我們得到一個具有登錄表單的Web應用程序,因此當web.xml中配置的會話超時過期時,它會將用戶重定向到該表單。在會話超時時部署的其他Web應用程序也將重定向到該表單。

一方面,我們在web.xml中爲每個Web應用程序都獲得了session-timeout屬性,另一方面我們在JBoss中啓用了SSO。

所有Web應用程序的會話超時值是否正確?我們是否應該忽略該值並關注某些SSO全局會話超時值?在這種情況下配置每個Web應用程序的會話超時的最佳做法是什麼?

謝謝你們, 問候。

回答

2

Web會話和SSO會話是不同的事情,會話是在您訪問Web應用程序時創建的,並且可以在沒有驗證的情況下生活。 SSO允許對一個資源進行身份驗證,以隱式授權訪問其他資源。
然後根據文檔:

SSO工作原理
如果資源是不受保護的,用戶沒有挑戰 在所有認證。如果用戶訪問受保護資源,則需要 用戶進行身份驗證。

成功驗證後,將與該用戶關聯的 角色存儲並用於所有其他關聯資源的授權 。

如果用戶退出一個 應用程序或應用的會話 無效編程,所有持久授權數據被移除,並且 過程重新開始。

如果其他會話仍然有效,會話超時不會使SSO會話失效。

所以,如果你想無效在集羣SSO authtentication,您可以調用該方法Request.logout(),例如。

SSO配置選項:

maxEmptyLife
集羣SSO只。在 到期之前,請求可以使用無活動會話的SSO 秒的最大秒數。如果它是唯一一個連接到閥門的活動會話,則正值可以正確處理關閉節點。 如果maxEmptyLife設置爲0,則閥門將終止於本地會話副本 的同一時間,但羣集應用程序的會話備份副本可用於其他羣集節點。允許 閥門超出其管理會話的壽命,使得用戶有時間發出另一個請求,然後可以故障切換到另一個節點,從而激活會話的備份副本。 默認爲1800秒(30分鐘)。

硒也:Use Single Sign On (SSO) In A Web Application

的另一件事情是不可能的配置JBoss的7默認session-timout值(如JBoss 4,5和6),所以你必須配置在每個應用此值。

例如。加入你的web.xml:

<session-config> 
    <session-timeout>20</session-timeout> 
</session-config> 

我希望這可以幫到你。

+0

感謝Federico,還有一點疑問,「如果其他會話仍然有效,會話超時不會使SSO會話失效。」 ?該Web應用程序中的用戶應該發生什麼? – Mateo 2014-10-31 18:25:02

+1

SSO是一種認證機制。 Web會話將具有關聯的SSO,該SSO將用戶與該主機上的其他應用程序或羣集中的其他節點相關聯。當所有關聯的會話無效,執行顯式註銷或關機時,SSO身份驗證都將失效。在集羣情況下,當會話無效時,sso身份驗證無效,因爲所有複製的會話都在同一時間針對同一應用程序過期。 – 2014-10-31 19:23:08

+0

好的,我測試了這種情況:用戶通過具有登錄表單的Web應用程序(Portal)登錄(它獲取兩個Cookie,一個表示Web應用程序的會話,另一個表示SSO會話),然後等待直到Web應用程序的會話過期。意外的是,我可以導航到另一個Web應用程序,並獲得該Web應用程序的會話。那種行爲是正確的?我錯過了什麼嗎? – Mateo 2014-11-05 17:57:51