CAS學習筆記二:CAS單點登錄流程


背景

由於公司項目甲方眾多,各甲方為了統一登錄用戶體系實現單點登錄(SSO)開始要求各乙方項目對接其搭建的CAS單點登錄服務,有段時間對CAS的流程很迷,各廠商還有基於CAS進行二次開發的情況,所以對它的官方文檔進行了一定的學習,記錄下來幫助有需要的同學。

由於CAS的驗簽協議較多,此處將僅使用 驗簽 略過其子流程,感興趣的可以查看官方文檔進行系統學習。

術語

此處將不介紹驗簽相關的術語,約等於CAS1

  • CAS (Central Authentication Service) - 中央認證服務器
  • SSO (Single Sign On) - 單點登錄
  • CAS Client - 集成CAS登錄流程的應用服務
  • TGT (Ticket Granting Ticket) - 存在 CAS 服務端的用戶票據,可使用此票據頒發ST
  • TGC (Ticket Granting Cookie)- 存在瀏覽器的 Cookie,對應 CAS 服務端的 TGT
  • ST (Service Ticket) - 服務票據,CAS為每個登錄成功的應用服務生成唯一票據,對應應用服務的服務名(serverName)

CAS單點登錄流程

單點登錄流程:

1~5步 為首次訪問服務A的單點登錄流程,6~9步為訪問A服務單點登錄成功后再訪問服務B的單點流程

  1. 用戶通過瀏覽器請求服務A資源
  2. 服務A校驗發現此請求未認證,重定向瀏覽器到CAS服務端登錄地址
  3. 用戶通過瀏覽器輸入用戶名密碼,發起登錄請求
  4. CAS服務端校驗用戶名密碼通過,響應頭會將TGC寫入瀏覽器CAS域名的Cookie中,重定向瀏覽器到 服務A地址 + 服務A的ST
  5. 服務A向CAS服務端發起校驗ST請求,驗證通過后服務A重定向請求到服務A未攜帶ST的地址,業務響應返回結果
  6. 用戶通過瀏覽器請求服務B的資源
  7. 服務B發現此請求未認證,重定向瀏覽器到CAS服務端登錄地址,由於CAS地址的Cookie有TGC,重定向時會被攜帶傳遞給CAS服務端
  8. CAS服務端校驗TGC發現有對應的TGT,頒發ST給服務B,重定向瀏覽器到 服務B + 服務B的ST
  9. 服務B向CAS服務端發起校驗ST請求,驗證通過后服務B重定向請求到服務B未攜帶ST的地址,業務響應返回結果

總結

  1. 用戶登錄成功會創建TGT,由TGT頒發ST。
  2. 用戶瀏覽器端會保存TGC,它對應一個TGT
  3. 瀏覽器端存在未過期的TGC,訪問CAS服務端時攜帶TGC,CAS使用TGT頒發ST,實現單點登錄

本文同步於本人博客園(hellxz.cnblogs.com) 與 CSDN(https://blog.csdn.net/u012586326),禁止轉載。


免責聲明!

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



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