CAS单点登出:一

    CAS单点登出问题及解决 一 (文章摘自笔者发在自己公司内部论坛的文章:谢绝转载)                                                                                                       
背景:目前很多业务反应,在使用 portal过程中,如果需要切换账号,做完登出操作后,需要清除cookies,才能使下一次登录人正常使用其他业务系统。


原因:在portal做完登出操作后,cas-server端接受到了登出的请求,并向cas-client端发送登出并清除session的请求。然而在我们的cas-client并未成功接收到请求。 在我们的web.xml中  配置的有CAS Single SignOut Filter和shiroFilter ,我们的shiroFilter在CAS Single Sign Out Filter之前,我们所有的请求都会被shiroFilter所拦截,CASSingle Sign Out Filter无法过滤请求,所以我们的cas-clienT监听不到cas-server 发过来的登出请求


解决方案:我们要将 CAS Single Sign Out Filter拷贝到shiroFilter   之前

      
  1. <!-- CAS Single Sign Out -->
  2. <listener>
  3.    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
  4. </listener>
  5. <filter>
  6.    <filter-name>CAS Single Sign Out Filter</filter-name>
  7.    <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
  8.    <init-param>
  9.       <param-name>casServerUrlPrefix</param-name>
  10.       <param-value>http://xxx/casserver/</param-value>
  11.    </init-param>
  12. </filter>
  13. <filter-mapping>
  14.    <filter-name>CAS Single Sign Out Filter</filter-name>
  15.    <url-pattern>/*</url-pattern>
  16. </filter-mapping>

  17. <!-- shiro filter -->
  18. <filter>
  19.    <filter-name>shiroFilter</filter-name>
  20.    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  21.    <init-param>
  22.       <param-name>targetFilterLifecycle</param-name>
  23.       <param-value>true</param-value>
  24.    </init-param>
  25. </filter>
  26. <filter-mapping>
  27.    <filter-name>shiroFilter</filter-name>
  28.    <url-pattern>/*</url-pattern>
  29.    <dispatcher>REQUEST</dispatcher>
  30. </filter-mapping>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值