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就會退出整個業務邏輯,後續的功能應該是應用自身完成.

相關文章
相關標籤/搜索