SSO(Single Sign On)單點(diǎn)登錄系統(tǒng)。現(xiàn)在很多系統(tǒng)都由多個(gè)子系統(tǒng)組成狞膘,為了統(tǒng)一登錄,保證登錄一次什乙,所有子系統(tǒng)都能訪問(wèn)挽封,提升用戶體驗(yàn),SSO方案由此而生臣镣。
SSO原理
SSO系統(tǒng)是單獨(dú)部署的一套認(rèn)證系統(tǒng)辅愿,獨(dú)立于所有子系統(tǒng),包含登錄認(rèn)證忆某、授權(quán)点待、用戶管理功能。用戶需要登錄任意業(yè)務(wù)子系統(tǒng)時(shí)弃舒,都被重定向到認(rèn)證中心癞埠,通過(guò)認(rèn)證中心登錄認(rèn)證后,就會(huì)設(shè)置一個(gè)全局會(huì)話并重定向到子系統(tǒng)聋呢。子系統(tǒng)與驗(yàn)證中心通信驗(yàn)證Ticket的真?zhèn)蚊缱伲绻鸗icket為真則將受保護(hù)資源返回給用戶。
SSO流程
用戶登錄流程
- 用戶瀏覽器訪問(wèn)系統(tǒng)A受保護(hù)資源削锰,cookie中sessionID(局部會(huì)話)
- 系統(tǒng)A檢測(cè)是否存在局部會(huì)話通铲,如果存在則直接返回受保護(hù)資源
- 系統(tǒng)A將請(qǐng)求重定向到認(rèn)證中心(重定向時(shí)需要指定callback)
- 認(rèn)證中心檢測(cè)是否存在全局會(huì)話(cookie中TGC是否存在)
** 4.1)如果全局會(huì)話存在,直接跳轉(zhuǎn)步驟8
** 4.2)如果全局會(huì)話不存在器贩,跳轉(zhuǎn)步驟5
- 認(rèn)證中心檢測(cè)是否存在全局會(huì)話(cookie中TGC是否存在)
- 認(rèn)證中心顯示登錄頁(yè)面
- 用戶在登錄頁(yè)面填好用戶名和密碼后颅夺,提交
- 認(rèn)證中心檢測(cè)用戶名和密碼是否匹配
- 認(rèn)證中心重定向到系統(tǒng)A(參數(shù)附帶ticket=TGC)
- 系統(tǒng)A將ticket提交到認(rèn)證中心驗(yàn)證
- 認(rèn)證中心返回ticket驗(yàn)證結(jié)果
- 如果ticket真實(shí),系統(tǒng)A返回請(qǐng)求的資源磨澡;如果ticket假的碗啄,重復(fù)步驟3。
注:1稳摄、局部會(huì)話是指瀏覽器與子系統(tǒng)之間的會(huì)話稚字,可以通過(guò)cookie或sessionID實(shí)現(xiàn)。 2、全局會(huì)話是指瀏覽器與認(rèn)證中心之間的會(huì)話胆描,通過(guò)TGC(Ticket Granting Cookie)瘫想,TGC實(shí)際上是CAS系統(tǒng)中的一個(gè)概念,用于保存TGT(Ticket Granting Ticket)的ID昌讲,也就是說(shuō)在傳輸過(guò)程中国夜,都是傳輸?shù)腡GT的ID。
參考
app-sso 實(shí)現(xiàn)原來(lái)是怎樣的短绸?
《SSO CAS單點(diǎn)系列》之 實(shí)操车吹!輕松玩轉(zhuǎn)SSO CAS就這么簡(jiǎn)單(相識(shí)篇)
CAS實(shí)現(xiàn)單點(diǎn)登錄SSO執(zhí)行原理探究(終于明白了)
CAS 之自定義登錄頁(yè)實(shí)踐
單點(diǎn)登錄(SSO)的設(shè)計(jì)與實(shí)現(xiàn)