11                 if (log.isTraceEnabled()) {
12                     log.trace ("Logout request=[" + logoutRequest + "]");
13                 }
14                 //从xml中解析 SessionIndex key值
15                 final String sessionIdentifier = XmlUtils.getTextForElement(logoutRequest, "SessionIndex");
16 
17                 if (CommonUtils.isNotBlank(sessionIdentifier)) {
18                         //根据sessionId取得session对象
19                     final HttpSession session = SESSION_MAPPING_STORAGE.removeSessionByMappingId(sessionIdentifier);
20 
21                     if (session != null) {
22                         String sessionID = session.getId();
23 
24                         if (log.isDebugEnabled()) {
25                             log.debug ("Invalidating session [" + sessionID + "] for ST [" + sessionIdentifier + "]");
26                         }
27                         
28                         try {
29                 //让session失效
30                             session.invalidate();
31                         } catch (final IllegalStateException e) {
32                             log.debug(e,e);
33                         }
34                     }
35                   return;
36                 }
37             }
38         } else {//get方式 表示登录,把session对象放到SESSION_MAPPING_STORAGE(map对象中)
39             final String artifact = request.getParameter(this.artifactParameterName);
40             final HttpSession session = request.getSession();
41             
42             if (log.isDebugEnabled() && session != null) {
43                 log.debug("Storing session identifier for " + session.getId());
44             }
45             if (CommonUtils.isNotBlank(artifact)) {
46                 SESSION_MAPPING_STORAGE.addSessionById(artifact, session);
47             }
48         }
49 
50         filterChain.doFilter(servletRequest, servletResponse);
51     }
先不管别的, 这么看,应该是 CAS SERVER 的 HTTPCLIENT 发起了一个类似
http://cs.xn.com/***?logoutRequest*** 大概这样子的请求, 里面有 session id(因为 server是遍历的形式,所以,即使有些CLIENT这边失效的sessionid,也会发过来)然后从 SingleSignOutHttpSessionListener 持有的全局 session表中获得 session实例,然后 session.invalidate();失效.并且从 全局 SESSION_MAPPING_STORAGE 里移除.
这样子,应该所有的子系统都会登出了.

CAS小总结的更多相关文章

  1. CAS多点登录

    转自:http://www.blogjava.net/alwayscy/archive/2012/12/01/392322.html 场景 想要用到的场景:用户访问WEB服务,WEB访问非WEB服务1 ...

  2. 开例外!微信小程序登录绕过CAS单点登录(SSO)认证检查

    1 为了让微信API能够绕过CAS认证检查,将微信api入口部分设计为独立的模块.放入controller目录下,命名为wechat.java文件为WechatController.java 文件大体 ...

  3. Java的多线程机制系列:(二)缓存一致性和CAS

    一.总线锁定和缓存一致性 这是两个操作系统层面的概念.随着多核时代的到来,并发操作已经成了很正常的现象,操作系统必须要有一些机制和原语,以保证某些基本操作的原子性.首先处理器需要保证读一个字节或写一个 ...

  4. 关于Java集合的小抄

    在尽可能短的篇幅里,将所有List.Map.Set.Queue的特征与实现方式捋一遍.适合所有"精通Java"其实还不那么自信的人阅读. List ArrayList 以数组实现. ...

  5. jasig CAS 实现单点登录 - java、php客户端登录实现

    jasig CAS项目本身就是一个完整的CAS单点登录服务 1.服务端需要把  认证处理类.用户属性返回值处理类 调整成我们自己处理类即可实现单点登录 2.java客户端需要引入cas-client- ...

  6. No.1 CAS 之LDAP认证服务端集群配置

    建档日期:   2016/08/31 最后修改日期:   2016/12/09   1 概述 本文描述了CAS单点登录服务端配置的大概流程,希望抛砖引玉,帮助你完成CAS服务端的配置. 本文采用apa ...

  7. java8中CAS的增强

    注:ifeve.com的同名文章为本人所发,此文在其基础做了些调整.转载请注明出处! 一.java8中CAS的增强 前些天,我偶然地将之前写的用来测试AtomicInteger和synchronize ...

  8. CAS客户端服务器端配置步骤

    来自我的个人网站:http://lkf.22web.org/ cas介绍: CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 ...

  9. CAS 与.net 集成的 “循环重定向”问题分析

    转自:http://www.cnblogs.com/xingshao/archive/2011/09/29/2195746.html 近期的一个项目,项目包含了若干的子系统,因为人员配备的原因,项目会 ...

随机推荐

  1. 左神算法书籍《程序员代码面试指南》——1_01设计一个有getMin功能的栈

    [题目] 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作. [要求] 1.pop.push.getMin操作的时间复杂度都是O(1).2.设计的栈类型可以使用现成的栈结构. ...

  2. SpringMVC学习总结

    SpringMVC部分重点组建介绍 前端处理器(DispatcherServlet):接受请求,响应结果,是SpringMVC的核心 处理映射器(HandlerMapping):根据URL去查找处理器 ...

  3. GitHub for Visual Studio使用讲解

    从VS2015起(应该是吧?),微软已经在VS中集成了GitHub,方便开发者对项目进行版本控制. 扩展包下载地址:https://aka.ms/ghfvs 其实VS2015的安装包中已经自带了这个扩 ...

  4. 订单风险系统BI

    最近被公司叫去协助传统做维表查询服务,项目已经做完.和前端联调过程发现oracle对查询 sql和产品设计还是挺重要的.不能全部堆给代码去做,如何方便代码,代码优化到最高性能才是首要解决的事,前端才能 ...

  5. _strupr _wcsupr _mbsupr

    将字符串转化为大写的形式(Convert a string to uppercase.)定义: char *_strupr( char *string ); wchar_t *_wcsupr( wch ...

  6. windows修改或删除已保存samba输入的用户名和密码

    可在系统的"控制面板\用户帐户\凭据管理器\windows 凭据"中找到 可以在"开始菜单->运行",输入"control userpasswo ...

  7. Mysql8+mybatisGenerator (mysql 8的逆向工程)

    最近试了一下mysql8的逆向工程工具 1.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOC ...

  8. md5密码入库

    <?php //连接数据库 $pdo = new PDO('mysql:host=localhost;dbname=md5;charset=UTF8', 'root', ''); # 设置为fa ...

  9. ArccGIS 10发布WFS服务并加载到Skyline中

    下面用ArcGIS Server 10.0将建筑物图层发布为WFS服务. (1)创建mxd文件.ArcMap打开建筑物图层,存为Buildings.mxd文件.注意:必须统一空间参考系,且要与图层的坐 ...

  10. Python 易错点

    1. Python查找一个变量时会按照“局部作用域”, “嵌套作用域”, “全局作用域”,“内置作用域”的顺序进行搜索. 在实际开发中,我们应该尽量减少对全局变量的使用,因为全局变量的作用域和影响过于 ...