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

東北小狐狸發表於2022-01-05

背景

由於公司專案甲方眾多,各甲方為了統一登入使用者體系實現單點登入(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. 使用者通過瀏覽器請求服務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重定向請求到服務A未攜帶ST的地址,業務響應返回結果

總結

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

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

相關文章