跟登陆一样,登出操作也很重要.由于是多应用间操作,状态保持也是一个要点,根据登出的影响范围,可以将登出操作分为两类:

  • 单应用登出
  • 单点登出(多应用登出)

顾名思义,单应用登出即登出只影响被操作的应用会话,其他应用和CAS会话状态不受影响.这也就需要你退出每一个应用,如果应用数量较多,每次退出可能都是件力气活.单点登出是结束SSO会话,所有建立在SSO会话上的的应用会话都会进行登出.使用户的状态保持一致.当应用间会话记录不一致时,登出操作可能会造成会话记录丢失;

  • 登出操作:
/logout?service=http://redirectUrl

根据CAS协议,/logout终点可以销毁当前SSO回话.

根据重定向配置的不同,可以分为三种方式:

第一种:全局重定向

  在cas的配置文件中,通过cas.logout.redirectUrl参数可以定义全局重定向地址.

第二种:参数重定向

  通过service参数定义登出重定向地址,启用service参数需要在允许服务重定向,相关配置如下:

cas.logout.followServiceRedirects=true
cas.logout.redirectParameter=service
cas.logout.redirectUrl=https://www.github.com
cas.logout.confirmLogout=false
cas.logout.removeDescendantTickets=true

第三种:服务级别重定向

  在注册服务中定义logoutUrl参数进行定义重定向地址;

{
"@class" : "org.apereo.cas.services.RegexRegisteredService",
"serviceId" : "testId",
"name" : "testId",
"id" : ,
"logoutType" : "BACK_CHANNEL",
"logoutUrl" : "https://web.application.net/logout"
}
logoutType:分为FRONT_CHANNEL,BACK_CHANNEL
  FRONT_CHANNEL:显示登出.cas直接发送http post请求到服务;
  BACK_CHANNEL:隐式登出.cas发送异步ajax get请求到已认证服务.通过cas客户端使应用会话失效;
  • 关闭单点登出:

需要在cas配置文件中增加如下配置,单点登出默认开启

cas.slo.disabled=true
cas.slo.asynchronous=true
  • SSO会话和应用会话

SSO会话是CAS通过TicketGrantingTicket和TGC进行状态保持而建立的会话;

应用会话:应用进行状态保持而建立的会话;

CAS不是一个应用会话管理工具,应用会话管理应该是应用自身的职责.当认证工作完成之后,CAS就会退出整个业务逻辑,后续的功能应该是应用自身完成.

cas系列-cas登出(四)的更多相关文章

  1. 源代码解读Cas实现单点登出(single sign out)功能实现原理

    关于Cas实现单点登入(single sing on)功能的文章在网上介绍的比较多,想必大家多多少少都已经有所了解,在此就不再做具体介绍.如果不清楚的,那只能等我把single sign on这块整理 ...

  2. 源代码解读Cas实现单点登出(single sign out)功能实现原理--转

    关于Cas实现单点登入(single sing on)功能的文章在网上介绍的比较多,想必大家多多少少都已经有所了解,在此就不再做具体介绍.如果不清楚的,那只能等我把single sign on这块整理 ...

  3. cas系列-cas REST协议(三)

    cas的rest协议 cas还支持rest协议方式进行访问,格式和参数如下: 1. 获取TGT 请求方式,路径,http协议及请求参数: POST /cas/v1/tickets HTTP/1.0 u ...

  4. cas系列-cas server demo搭建(二)

    一 部署简述 cas server官方推荐采用overlay方式进行部署,通过替换自定义文件,减少项目文件改动,以简化开发和部署,这个有点类似于项目上直接替换java的class文件,由于和git的搭 ...

  5. CAS单点登出的原理

    单点登出功能跟单点登录功能是相对应的,旨在通过Cas Server的登出使所有的Cas Client都登出. Cas Server的登出是通过请求“/logout”发生的,即如果你的Cas Serve ...

  6. Cas(08)——单点登出

    单点登出 目录 1.1     Cas Client端配置单点登出 1.2     Cas Server端禁用单点登出 1.1     Cas Client端配置单点登出 单点登出功能跟单点登录功能是 ...

  7. cas sso单点登录 登录过程和登出过程原理说明

    CAS大体原理我就不说了,网上一大把,不过具体交互流程没说清楚,所以有这篇文章,如果有错误,请多多指教 登录过程 用户第一次访问一个CAS 服务的客户web 应用时(访问URL :http://192 ...

  8. CAS学习笔记五:SpringBoot自动/手动配置方式集成CAS单点登出

    本文目标 基于SpringBoot + Maven 分别使用自动配置与手动配置过滤器方式实现CAS客户端登出及单点登出. 本文基于<CAS学习笔记三:SpringBoot自动/手动配置方式集成C ...

  9. phpCAS::handleLogoutRequests()关于java端项目登出而php端项目检测不到的测试

    首先,假如你有做过cas,再假如你的cas里面有php项目,这个时候要让php项目拥有cas的sso功能,你需要改造你的项目,由于各人的项目不同,但是原理差不多,都是通过从cas服务器获取sessio ...

随机推荐

  1. SQL查看数据库中每张表的数据量和总数据量

    查看所有表对应的数据量 SELECT a.name AS 表名, MAX(b.rows) AS 记录条数 FROM sys.sysobjects AS a INNER JOIN sys.sysinde ...

  2. 无法解析的外部符号 ___argc nafxcw.lib(appcore.obj)

    参考 https://blog.csdn.net/wfree/article/details/44171157 MFC的使用: 由"在静态库中使用 MFC" 改成 "在共 ...

  3. K2 BPM_采购端到端解决方案,激活合规采购新动能_十年专注业务流程管理系统

    「方案背景」企业管理标准化演进之路 企业的成长离不开标准化,企业的可持续发展更离不开标准化.随着市场竞争的日趋激烈,标准化已经成为企业参与市场竞争的战略性手段,也成为企业可持续发展的重要手段.聚焦到采 ...

  4. javascript_03-数据类型

    数据类型 JavaScript 和 Java 一样,也是有基本数据类型的.但也是有区别的. JavaScript中的数据类型 简单(基本.值)数据类型 number string boolean un ...

  5. 【DevOps】在CentOS中安装Rancher2,并配置kubernetes集群

    准备 一台CentOS主机,安装DockerCE,用于安装Rancher2 一台CentOS主机,安装DockerCE,用于安装kubernetes集群管理主机 多台CentOS主机,安装Docker ...

  6. (转)大厂常问到的14个Java面试题

    1. synchronized和reentrantlock异同 相同点 都实现了多线程同步和内存可见性语义 都是可重入锁 不同点 实现机制不同 synchronized通过java对象头锁标记和Mon ...

  7. 解决Hibernate validator抛出Ljavax/validation/ParameterNameProvider异常方法

    最近升级CAS Client4.0客户端Spring版本至Spring4.*以上,升级整合hibernate框架时,Hibernate validator 4.3.0.Final使用版本(从Hiber ...

  8. ES6 解构赋值详解

    解构赋值是对赋值运算符的扩展,可以将属性/值从对象/数组中取出,赋值给其他变量. 一.数组的解构赋值 1.基本用法 只要等号两边的模式相同,左边的变量就会被赋予对应的值. let [a, [[b], ...

  9. linux网络编程之socket编程(十四)

    经过令国鸡冻的APEC会之后,北京的冬天终于不冷了,有暖气的日子就是倍儿爽呀~~洗完热水澡,舒服的躺在床上欢乐地敲打着键盘,是件多么幸福的事呀,好了,抒发情感后,正题继续. 上节中已经初步学习了UDP ...

  10. 集合(python)

    # -*- coding: utf-8 -*- class Array(object): def __init__(self, size=32, init=None): self._size = si ...