SSO(Single Sign On)即單點登陸,是指在多系統應用羣中登陸一個系統,即可在其餘全部系統中獲得受權而無需再次登陸,包括單點登陸與單點註銷兩部分。SSO能夠提高用戶體驗,作到登陸機制統一開發與維護,SSO 不只是有用的並且是必要的。html
詳述一下各類場景下的SSO問題,它們之間是逐步升級、逐步複雜化的關係。前端
基於瀏覽器和Http協議的支持,一次登陸成功,將Cookie寫到同域(如產品a域名xyz.cn/a和產品b域名xyz.cn/b,同域xyz.cn)或根域(如產品a域名a.xyz.cn和產品b域名b.xyz.cn,根域爲.xyz.cn)下,那麼這樣全部的站點就能實現同一個域名或根域下的Cookie共享,天然實現了「單點登陸」。git
若是是多個根域名,因爲瀏覽器和http協議不支持不一樣根域下的cookie共享,上述簡單方式不可行。能夠考慮在登陸成功以後將Cookie回寫到多個域名下,或者採起jsonp的方式,可是維護成本較高且不具備廣泛適用性。比較通用的方式是基於標準的CAS方案來實現。github
SSO僅僅是一種架構,一種設計,而CAS則是實現SSO的一種手段。二者是抽象與具體的關係。固然,除了CAS以外,實現SSO還有其餘手段,好比簡單的 cookie。json
CAS(Central Authentication Service)中心受權服務,自己是一個開源協議,分爲 1.0 版本和 2.0 版本。1.0 稱爲基礎模式,2.0稱爲代理模式,適用於存在非Web應用之間的單點登陸。跨域
TGT:Ticket Granted Ticket(俗稱大令牌,或者說票根,他能夠簽發ST)
TGC:Ticket Granted Cookie(cookie中的value),存在Cookie中,根據他能夠找到TGT。
ST:Service Ticket (小令牌),是TGT生成的,默認是用一次就生效了。瀏覽器
參考官網時序圖(1.0版本):cookie
參考連接架構