cas系列-cas登出(四)

跟登录同样,登出操做也很重要.因为是多应用间操做,状态保持也是一个要点,根据登出的影响范围,能够将登出操做分为两类: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会话和应用会话

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

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

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

相关文章
相关标签/搜索