Cas 从https改成http Google浏览器无法实现单点登录

来源:互联网 发布:linux 安装2个jdk 编辑:程序博客网 时间:2024/05/23 15:38

最近在研究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确实能解决我遇到的这个问题)