整合了Spring-Security的业务系统无法通过CAS进行单点注销

原创 2011年11月28日 15:55:38

今天整合的业务系统使用了Spring-Security框架,并且集成了CAS-Client,CAS的版本是3.4

在CAS的单点注销下,原理是CAS在注销模块中,通过使用各个业务系统认证时所提供的URL做为路径逐个再去反向访问各个业务系统,发送的是POST请求,那么各个业务系统的CAS-CLIENT接受到该请求后,从请求内容中分解出票据,然后依据票据找到之前已经保存好的session,最后执行session.invalidate方法使其失效。原理很简单,在一般业务系统下也很正常,但如果业务系统使用了spring-security,则会出现问题,原因是spring-security中有一个默认配置是防止会话伪造的功能为开启,开启此功能后,用户的当前会话会被撤销从而产生一个新的会话,这时CAS-CLIENT在做撤销处理时就无法得到票据所对象的session对象了。

解决方法:

Spring Security默认就会启用session-fixation-protection,这会在登录时销毁用户的当前session,然后为用户创建一个新session,并将原有session中的所有属性都复制到新session中。

如果希望禁用session-fixation-protection,可以在http中将session-fixation-protection设置为none。 

 
Java代码  收藏代码
  1. <http auto-config='true' session-fixation-protection="none">  
  2.     <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />  
  3.     <intercept-url pattern="/**" access="ROLE_USER" />  
  4. </http>  
 
session-fixation-protection的值共有三个可供选择,none,migrateSession和newSession。默认使用的是migrationSession,如同我们上面所讲的,它会将原有session中的属性都复制到新session中。上面我们也见到了使用none来禁用session-fixation功能的场景,最后剩下的newSession会在用户登录时生成新session,但不会复制任何原有属性。

cas server4.1.3 项目 本地部署登录验证无法通过验证登录?

数据源配置好后,无法验证登录,数据源配置也是正确的 但是不知道为什么不能验证通过 2016-01-14 13:45:22,318 ERROR [org.jasig.cas.authentic...
  • liuwenfeng554
  • liuwenfeng554
  • 2016-01-14 14:03:31
  • 1451

Spring Security 结合CAS登入登出配置文件详解

Spring Security配置文件
  • gz530
  • gz530
  • 2011-05-09 10:12:00
  • 2900

SpringBoot集成SpringSecurity+CAS

本文主要讲述如何通过SpringSecurity+CAS在springboot项目中实现单点登录和单点注销的功能。参考内容有Spring Security官方文档中的 1. 5. Java Conf...
  • jaune161
  • jaune161
  • 2017-09-22 11:06:37
  • 2714

spring boot配置Cas单点登录

cas server配置: 参照网址:http://www.jianshu.com/p/600593b1f366 源码github地址:https://github.com/willwu1984/sp...
  • shunhua19881987
  • shunhua19881987
  • 2017-05-25 12:01:22
  • 5006

CAS—注销登录后跳转到登录页

CAS单点登出后,默认会跳到它自带的注销界面(这里建立在已部署好CAS—Server的基础上,详情见上篇文章),如下图:   对应的jsp如下目录: 1、修改cas-servlet.xml配置  ...
  • wang379275614
  • wang379275614
  • 2015-06-03 08:50:58
  • 10520

cas退出功能

用了CAS,发现退出真是个麻烦事,退出后跳转到了CAS的注销页面,而且不关闭浏览器的话,其实并没有真的退出,输入地址仍是登陆状态。为了实现退出后登陆到跳转页面,做了以下配置: 1.serve...
  • shangzhiliang_2008
  • shangzhiliang_2008
  • 2014-06-26 18:47:27
  • 3932

cas单点登出

由于项目需求要实现单点登出需要在网上找了N久终于实现单点登出。 使用cas-server-core-3.3.3.jar(CAS Server 3.3.3) 使用cas-client-cor...
  • lishuangzhe7047
  • lishuangzhe7047
  • 2014-08-15 16:25:06
  • 8632

Apache Shiro 退出

退出操作可以通过调用subject.logout()来释放你的登录信息,如: currentUser.logout(); //removes all identifying inf...
  • peterwanghao
  • peterwanghao
  • 2012-10-18 09:43:43
  • 15040

shiro + cas 4.04 单点退出 注销

假如你已经整合了shiro +cas的情况下。由于注销cas成功后,是cas注销成功页面,无法跳转到客户端登陆页面。发生这种情况如何处理: 客户端:配置如图 注意,redirectUrl 中 ...
  • I__Rookie
  • I__Rookie
  • 2017-09-08 13:48:46
  • 783

CAS_SHIRO_SESSION使用Redis共享的方式与结果

CAS_SHIRO_SESSION共享的问题结构图:使用Shiro的Redis插件 单点登录成功,多点退出失败(某个应用退出以后,其它应用不受影响,仍然在线,无法达到退出要求),主要问题在与Sin...
  • babys
  • babys
  • 2017-05-20 14:39:10
  • 1943
收藏助手
不良信息举报
您举报文章:整合了Spring-Security的业务系统无法通过CAS进行单点注销
举报原因:
原因补充:

(最多只允许输入30个字)