今天使用CAS部署实现了单点登录,扩展了界面,也扩展了登陆认证,但是在logout的时候发现一些问题:
前提:两个web应用web1和web2,一个CAS服务端casserver,本机域名:www.mycas.com
问题一:
1.登录了web1,redirect到casserver,casserver认证后,再redirect到web1;
2.http方式 lougout casserver,即http://www.mycas.com:8080/cas/lougout,显示logout成功;
3.访问web1,web2,还是不用验证就能访问,即相当于注销没用;
4.原因是你不通过https来注销,casserver无法"杀"掉它通过https发给你的TGC Cookie,所以你可以关闭浏览器注销.
问题二:
1.登录了web1,redirect到casserver,casserver认证后,再redirect到web1;
2.https方式 lougout casserver1,即https://www.mycas.com:8443/cas/lougout,显示logout成功
3.访问web1不用验证就能访问,但是访问web2的时候就无法访问了,重定向到casserver的登录界面;
4原因是你已经能够访问的东西可以继续访问,CASLogout不能阻止你访问web1,它只能阻止你访问web2,因为你已经被允许访问web1,而web2则还没有,如果你在(第一种情况)的时候,顺带也访问web2,那么你的注销将毫无作用了,CAS无法阻止你访问这两个web,因为你有Service Ticket。
如果你认为Logout就是退出系统,那时不正确的,因为CAS Logout的作用不是这样,它的作用是阻止你继续通过TGC(它简单地清除了IE的TGC Cookie)来获取ST,阻止你获取通向其他web应用的Ticket。所以,用完web1的时候,注销,然后再关闭掉IE就彻底Logout了。
另外也可以增加JS脚本,在logout时将对应的jsessionid清空;另外注销地址要考虑登录时是否有使用HTTPS,登录时使用了HTTPS,则注销时一样要使用HTTPS
(By:Gxmis-alextang)