CAS注销和cookie消除

时间:2012-02-24 17:55:21

标签: java single-sign-on cas jasig

我刚刚创建了一个HelloWorld servlet并在其上实现了CAS。 我能够毫无问题地登录,CAS在我的浏览器中设置了3个cookie,CASGT和2个JSESSIONID 1用于/ cas,另一个用于/ helloWorld

问题是,然后我访问https://blah:8443/cas/logout,我看到已登出的成功屏幕,但cookie仍然在我的浏览器中,所以我没有被淘汰,我可以再次进入/ helloWorld登录屏幕显示。

你知道我应该怎么做CAS删除它在我退出时创建的cookie吗?

提前致谢

2 个答案:

答案 0 :(得分:6)

CASGT cookie由CAS设置,应该由它取消设置。 CAS注销程序的工作方式如下:

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

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

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

  4. 要调试CAS,请启用TRACE级别日志记录。这样您就可以知道是否收到了正确的请求,或者会话是否已失效。

    我还建议您查看org.jasig.cas.client.session包的代码,这非常简单。

答案 1 :(得分:3)

您应该查看有关CAS单点登出的文档here。它说:

  

单点登出的工作原理:

     

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

     

单点注销不起作用:

     

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

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