CAS注销和cookie消除
我刚刚创建了一个HelloWorld servlet并在其上实现了CAS。 我能够毫无问题地登录,CAS在我的浏览器中设置了3个cookie,CASGT和2个JSESSIONID 1用于/ cas,另一个用于/ helloWorld
问题是,然后我访问https:// blah:8443 / cas / logout ,我看到已注销的成功屏幕,但cookie仍然在我的浏览器中,所以我没有被淘汰,我可以再次进入/ helloWorld没有显示登录屏幕。
你知道我应该怎么做CAS删除它在我注销时创建的cookie吗?
提前致谢
CASGT cookie由CAS设置,应该由它取消设置。 CAS注销程序的工作方式如下:
-
你实际上去了CAS登出页面。 页面应该知道您要从中注销的应用程序。 一种方法是从应用程序重定向到CAS注销页面,提供重定向URL作为参数。
-
您的cookie将被删除,然后您将通过POST请求重定向到您的应用程序。
-
SingleSignOutFilter
捕获一个特殊参数“logoutRequest”,实际上会破坏它从一开始就保留的票证/会话映射,并使当前会话无效。
要调试CAS,请启用TRACE
级别日志记录。 通过这种方式,您将知道是否收到了正确的请求或会话是否已失效。
我还建议你看一下org.jasig.cas.client.session
包的代码,这很简单。
您应该查看CAS单点登出的文档,可在此处找到。 它说:
单点注销的工作原理:
在服务器端维护会话管理的客户端/语言。 然后,CAS客户端可以访问会话信息以结束会话。
单点注销不起作用的地方:
客户端/语言,其唯一的会话管理包含cookie。 CAS无法访问浏览器的cookie,因此无法终止会话。 (但是,关闭浏览器窗口应该这样做)
我认为这几乎就是你的情况。 基于Cookie它不可能做SSout,但如果你可以使用像Spring这样的框架(就像我们在项目中那样),那么SSout很容易配置并且非常方便