cas系列-cas登出(四)


跟登陸一樣,登出操作也很重要.由於是多應用間操作,狀態保持也是一個要點,根據登出的影響范圍,可以將登出操作分為兩類:

  • 單應用登出
  • 單點登出(多應用登出)

顧名思義,單應用登出即登出只影響被操作的應用會話,其他應用和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" : 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就會退出整個業務邏輯,后續的功能應該是應用自身完成.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM