Cas 從https改成http Google瀏覽器無法實現單點登入
阿新 • • 發佈:2019-01-30
最近在研究CAS,版本號為5.2.x。
當我把CAS從https改成http之後遇到了一個很奇怪的現象:
- 訪問clientA之後正常跳轉到Server,登入之後返回clientA的index頁面,同時在url上附帶了JSESSIONID
- 再次訪問cilentA或者訪問clientB,丫的又跳回Server讓我登入
- 如果在url上保留JSESSIONID訪問clientA就可以正常實現登入
一開始我以為是CAS Server的配置沒有做好,配置如下:
- 刪除Server和Client的證書
- 把所有https改成http(主要是配置中的url)
- 啟用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才能正常訪問(嗯,這都是我瞎推測的