1. 程式人生 > >Cas 從https改成http Google瀏覽器無法實現單點登入

Cas 從https改成http Google瀏覽器無法實現單點登入

最近在研究CAS,版本號為5.2.x。
當我把CAS從https改成http之後遇到了一個很奇怪的現象:

  1. 訪問clientA之後正常跳轉到Server,登入之後返回clientA的index頁面,同時在url上附帶了JSESSIONID
  2. 再次訪問cilentA或者訪問clientB,丫的又跳回Server讓我登入
  3. 如果在url上保留JSESSIONID訪問clientA就可以正常實現登入

一開始我以為是CAS Server的配置沒有做好,配置如下:

  1. 刪除Server和Client的證書
  2. 把所有https改成http(主要是配置中的url)
  3. 啟用cas.tgc.secure和cas.warningCookie.secure並將值設定為false(意思是不啟用https驗證)

後來拿IE做了下測試,咦,我靠,怎麼是正常的?!
想了想,有JSESSIONID返回就證明Server和Client正常啟用了會話,但是不在url上附帶JSESSIONID就會報錯;JSESSIONID是Session的ID標識,JSESSIONID存在於瀏覽器的Cookie中…
真相只有一個!
Google瀏覽器的Cookie出了問題,跑到Google的Cookies管理一看,又除錯了一下,發現Cookie裡儲存的JSESSIONID恆定不變,趕緊把它刪了,再重新整理,重新測試,果然,正常了。

小結:推測問題的原因是,Google在儲存Cookie的時候是依據域名儲存的,從https換成http之後,新生成的Cookie不能儲存,必須刪除原來的https生成的Cookie才能正常訪問(嗯,這都是我瞎推測的

,不過刪除Cookie確實能解決我遇到的這個問題)