cas客户端集群无法登出问题

  • 问题描述

cas server 广播的登出请求,如果是接收到该请求的客户端是集群客户端,则无法确保集群的客户端能够顺利登出

  • 部署环境

  • cas client 1
    apache
    A:http://client1.cas.com
    tomcat
    A1:http://client1.cas.com:8085
    A2:http://client1.cas.com:8086
    A3:http://client1.cas.com:8086

  • cas client 2
    B: http://client2.cas.com

  • cas server
    https://server.cas.com:8443/cas

  • 解决方法说明

集群A有客户端A1,A2,A3。客户端B登出,向cas server发出注销请求, 接着cas server 就会向所有客户端广播登出请求后,假设集群A中的A1接收到请求,如果session在A1,就退出A1就可以,假如session不在A1,由A1广播给集群里面的其他A2,A3,保证集群A可以登出。

  • 代码

1、 web.xml 改写SingleSignOutFilter,SingleSignOutHttpSessionListener替换掉原来的两个类


    SingleSignOutFilter
    com.cas.SingleSignOutFilter
    



    SingleSignOutFilter
    /*



    com.cas.SingleSignOutHttpSessionListener
    

2、 applicationContext.xml 配置cas客户端集群节点地址,用于cas客户端集群登出 见SingleSignOutFilter
 
    http://client1.cas.com:8085 
    http://client1.cas.com:8086 
    http://client1.cas.com:8087 

3、 改写的SingleSignOutFilter,SingleSignOutHandler
cas客户端集群无法登出问题_第1张图片
cas客户端集群无法登出问题_第2张图片
cas客户端集群无法登出问题_第3张图片

你可能感兴趣的:(cas客户端集群无法登出问题)