背景
由於公司專案甲方眾多,各甲方為了統一登入使用者體系實現單點登入(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單點登入流程
單點登入流程:
- 使用者通過瀏覽器請求服務A資源
- 服務A校驗發現此請求未認證,重定向瀏覽器到CAS服務端登入地址
- 使用者通過瀏覽器輸入使用者名稱密碼,發起登入請求
- CAS服務端校驗使用者名稱密碼通過,響應頭會將TGC寫入瀏覽器CAS域名的Cookie中,重定向瀏覽器到
服務A地址 + 服務A的ST
- 服務A向CAS服務端發起校驗ST請求,驗證通過後服務A重定向請求到服務A未攜帶ST的地址,業務響應返回結果
- 使用者通過瀏覽器請求服務B的資源
- 服務B發現此請求未認證,重定向瀏覽器到CAS服務端登入地址,由於CAS地址的Cookie有TGC,重定向時會被攜帶傳遞給CAS服務端
- CAS服務端校驗TGC發現有對應的TGT,頒發ST給服務B,重定向瀏覽器到
服務B + 服務B的ST
- 服務B向CAS服務端發起校驗ST請求,驗證通過後服務B重定向請求到服務A未攜帶ST的地址,業務響應返回結果
總結
- 使用者登入成功會建立TGT,由TGT頒發ST。
- 使用者瀏覽器端會儲存TGC,它對應一個TGT
- 瀏覽器端存在未過期的TGC,訪問CAS服務端時攜帶TGC,CAS使用TGT頒發ST,實現單點登入
本文同步於本人部落格園(hellxz.cnblogs.com) 與 CSDN(https://blog.csdn.net/u012586326),禁止轉載。