單點登陸CAS使用記:關於服務器超時以及客戶端超時的分析

個人預想狀況html

 通常狀況下,當用戶登陸一個站點後,若是長時間沒有發生任何動做,當用戶再次點擊時,會被強制登出而且跳轉到登陸頁面,web

提醒用戶從新登陸。如今我已經爲站點整合了CAS,而且已經實現了單點登陸以及單點註銷,那麼當用戶使用過程當中,發生了超時的狀況,session

估計也是自動的強行登出了吧,並且可能其餘部署了Cas的站點也跟着自動登出了。
 ide

我是這麼猜測的。server

 

那麼實際狀況究竟是什麼樣的xml

首先先列出我本身開發過程當中的遇到的一系列疑問:htm

1.Cas-Client超時後發生了什麼?blog

2.Cas-Server超時後發生了什麼?ip

3.Cas-Client與Cas-Server超時時間分別該怎麼設置才比較好?ci

4.一個站點超時,其餘站點集中被註銷了嗎?

 

下面來驗證一下實際狀況

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.一個站點超時,其餘站點集中被註銷了嗎?

從以前的驗證來看,一個站點超時,並不影響其餘站點的正常訪問。

相關文章
相關標籤/搜索