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