跟登录同样,登出操做也很重要.因为是多应用间操做,状态保持也是一个要点,根据登出的影响范围,能够将登出操做分为两类:git
顾名思义,单应用登出即登出只影响被操做的应用会话,其余应用和CAS会话状态不受影响.这也就须要你退出每个应用,若是应用数量较多,每次退出可能都是件力气活.单点登出是结束SSO会话,全部创建在SSO会话上的的应用会话都会进行登出.使用户的状态保持一致.当应用间会话记录不一致时,登出操做可能会形成会话记录丢失;github
/logout?service=http://redirectUrl
根据CAS协议,/logout终点能够销毁当前SSO回话.web
根据重定向配置的不一样,能够分为三种方式:ajax
第一种:全局重定向app
在cas的配置文件中,经过cas.logout.redirectUrl参数能够定义全局重定向地址.异步
第二种:参数重定向async
经过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
第三种:服务级别重定向post
在注册服务中定义logoutUrl参数进行定义重定向地址;spa
{ "@class" : "org.apereo.cas.services.RegexRegisteredService", "serviceId" : "testId", "name" : "testId", "id" : 1, "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会话是CAS经过TicketGrantingTicket和TGC进行状态保持而创建的会话;
应用会话:应用进行状态保持而创建的会话;
CAS不是一个应用会话管理工具,应用会话管理应该是应用自身的职责.当认证工做完成以后,CAS就会退出整个业务逻辑,后续的功能应该是应用自身完成.