個人預想狀況html
通常狀況下,當用戶登陸一個站點後,若是長時間沒有發生任何動做,當用戶再次點擊時,會被強制登出而且跳轉到登陸頁面,web
提醒用戶從新登陸。如今我已經爲站點整合了CAS,而且已經實現了單點登陸以及單點註銷,那麼當用戶使用過程當中,發生了超時的狀況,session
估計也是自動的強行登出了吧,並且可能其餘部署了Cas的站點也跟着自動登出了。
ide
我是這麼猜測的。server
那麼實際狀況究竟是什麼樣的xml
首先先列出我本身開發過程當中的遇到的一系列疑問:htm
3.Cas-Client與Cas-Server超時時間分別該怎麼設置才比較好?ci
下面來驗證一下實際狀況
1.Cas-Client超時後發生了什麼?
Cas-Client客戶端其實不須要額外作超時的配置,由於是在原有項目的web.xml中配置,說白了就是原項目的一部分,
因此以原項目設置的超時時間爲準。
通常狀況都是在web.xml中這麼設置的:
<session-config> <session-timeout>120</session-timeout> </session-config>
驗證方法:
事前準備:
1.把webApp1的超時時間設置爲1分鐘,webApp2不作修改,超時時間爲2小時,CAS-Server默認超時時間也是2小時
2.啓動CAS-Server、webApp一、webApp2
3.分別登陸webApp一、webApp2
驗證動做:
2分鐘後,我優先點擊webApp1的網頁,彷彿沒有發生任何與超時相關的處理,依然能夠正常訪問全部頁面。並無強制跳轉到登陸頁。我再點擊webApp2的網頁,也能夠正常瀏覽。
又過了2分鐘,我優先點擊webApp2的網頁,能夠正常訪問。再次點擊webApp1,也能夠正常訪問。
驗證結果:
1.webApp1雖然超時了,可是並無被強制登出,依然能夠正常訪問。
2.webApp2徹底沒有受到webApp1的超時影響,也能夠正常訪問。
緣由分析:
...編寫中
2.Cas-Server超時後發生了什麼?
cas服務端超時應該主要指的是TGT(ticket granting ticket)超時,若是TGT時間到期,則須要進行從新登陸。這裏時間單位是毫秒,默認是兩小時。
ticketExpirationPolicies.xml
<bean id="grantingTicketExpirationPolicy" class="org.jasig.cas.ticket.support.TimeoutExpirationPolicy"> <!-- This argument is the time a ticket can exist before its considered expired. --> <constructor-arg index="0" value="7200000" /> </bean>
驗證方法:
事前準備:
1.CAS-Server默認超時時間也是2分鐘,webApp1的超時時間設置爲5分鐘、webApp2的超時時間設置爲10分鐘。
2.啓動CAS-Server、webApp一、webApp2
3.分別登陸webApp一、webApp2
驗證動做:
3分鐘後,CAS-Server應該已經超時了,這時我訪問webApp1,能夠正常訪問。訪問webApp2,也能夠正常訪問。
6分鐘後,CAS-server與webApp1應該都超時了,這時訪問webApp1,頁面被強制重定向到登陸頁面了。再訪問webApp2,發現仍然能夠正常訪問。
11分鐘後,webApp2頁超時了,這時訪問webApp2,頁面就被重定向到登陸頁面了。
驗證結果:
1.CAS-Server的TGT超時,並不會影響到頁面的正常訪問,也就是說TGT超時後,並無主動的銷燬客戶端的Session。
2.只有當TGT超時後,而且客戶端也超時了,這時候客戶端纔會主動向Cas-Server從新發起請求認證,而後發現TGT超時了,因此重定向回登陸頁面。
3.一個客戶端超時並不會影響其餘客戶端的正常訪問。
緣由分析:
...編寫中
3.Cas-Client與Cas-Server超時時間分別該怎麼設置才比較好?
從以上兩個驗證能夠發現,一旦客戶端經過了CAS-Server認證後,客戶端就至關於徹底獨立了,即便再訪問客戶端的頁面,客戶端與CAS-Server之間也不在發生任何交互或者驗證動做。
一直到客戶端強制登出或者超時後,纔會主動發起認證請求,CAS-Server纔會被動的處理請求,判斷是須要重定向仍是從新認證經過。
也就是說,若是服務端超時時間設置的太短,並不會起做用,仍是要等客戶端超時後才行。
鑑於以上,客戶端與服務端的超時時間應該設置爲:
CAS-Server(TGT)超時時間 >= Cas-Client的超時時間
4.一個站點超時,其餘站點集中被註銷了嗎?
從以前的驗證來看,一個站點超時,並不影響其餘站點的正常訪問。