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注销程序的工作方式如下:

  1. 你实际上去了CAS登出页面。 页面应该知道您要从中注销的应用程序。 一种方法是从应用程序重定向到CAS注销页面,提供重定向URL作为参数。

  2. 您的cookie将被删除,然后您将通过POST请求重定向到您的应用程序。

  3. SingleSignOutFilter捕获一个特殊参数“logoutRequest”,实际上会破坏它从一开始就保留的票证/会话映射,并使当前会话无效。

要调试CAS,请启用TRACE级别日志记录。 通过这种方式,您将知道是否收到了正确的请求或会话是否已失效。

我还建议你看一下org.jasig.cas.client.session包的代码,这很简单。

您应该查看CAS单点登出的文档,可在此处找到。 它说:

单点注销的工作原理:

在服务器端维护会话管理的客户端/语言。 然后,CAS客户端可以访问会话信息以结束会话。

单点注销不起作用的地方:

客户端/语言,其唯一的会话管理包含cookie。 CAS无法访问浏览器的cookie,因此无法终止会话。 (但是,关闭浏览器窗口应该这样做)

我认为这几乎就是你的情况。 基于Cookie它不可能做SSout,但如果你可以使用像Spring这样的框架(就像我们在项目中那样),那么SSout很容易配置并且非常方便