分享

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

 KILLKISS 2017-04-14
  • 问题描述

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

  • 解决方法说明

    集群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替换掉原来的两个类
<!-- cas 单点登出 -->
<filter>
    <filter-name>SingleSignOutFilter</filter-name>
    <filter-class>com.cas.SingleSignOutFilter</filter-class>
    <!-- <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> -->
</filter>

<filter-mapping>
    <filter-name>SingleSignOutFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<listener>
    <listener-class>com.cas.SingleSignOutHttpSessionListener</listener-class>
    <!-- <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> -->
</listener>
2、 applicationContext.xml 配置cas客户端集群节点地址,用于cas客户端集群登出 见SingleSignOutFilter
<util:list id="clusterNodeUrls" list-class="java.util.ArrayList"> 
    <value>http://client1.:8085</value> 
    <value>http://client1.:8086</value> 
    <value>http://client1.:8087</value> 
</util:list>
3、 改写的SingleSignOutFilter,SingleSignOutHandler



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多