跟登錄同樣,登出操做也很重要.因爲是多應用間操做,狀態保持也是一個要點,根據登出的影響範圍,能夠將登出操做分爲兩類: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就會退出整個業務邏輯,後續的功能應該是應用自身完成.