談?wù)凷SO

好久沒寫過干貨了,從今天開始到年底正好閑一段時間,保持每天一篇,把所學(xué)知識做個總結(jié),首先我們談?wù)凷SO,先從概念說起,單點登錄系統(tǒng)的是在一個體系結(jié)構(gòu)的系統(tǒng)群,一個系統(tǒng)登錄后所有系統(tǒng)都可以保持登錄狀態(tài),無需再次登錄。同理,一個系統(tǒng)退出,所有系統(tǒng)就都跟著退出,并且支持系統(tǒng)間相互踢出、更換密碼主動退出重登等基本功能。

我們先來看看這個單點系統(tǒng)的時序圖:


從圖我們看到A1、A2系統(tǒng)都沒有維護單獨的登錄界面,也就是說登錄這兩個系統(tǒng)的時候從重定向到了SSO認(rèn)證系統(tǒng)中了,由SSO認(rèn)證系統(tǒng)提供統(tǒng)一一套授權(quán)體系。此外還要注意的一點是A1、A2系統(tǒng)是具有自己的一套維持登錄會話體系的,其實按道理來講如果能保證每次請求有狀態(tài)的資源的時候訪問帶著令牌去訪問是否有權(quán)限也可以的,原因是避免與passport系統(tǒng)間的不必要的耦合,這樣做的劣勢就是每個系統(tǒng)去維護一套維持會話機制。

大概流程流程做下細(xì)節(jié)描述:

1.首先張三在谷歌瀏覽器去訪問了a1.xx.com系統(tǒng),此時a1系統(tǒng)將在谷歌瀏覽器中寫入一個cookie,該cookie信息就是一個sessionId,之后a1系統(tǒng)將重定向到sso.xx.com系統(tǒng)。

2.然后sso系統(tǒng)進行登錄授權(quán)以及維持自己的會話體系,大概邏輯就是將生成的令牌與登錄用戶關(guān)系維持到分布式緩存中,然后帶著令牌跳轉(zhuǎn)到a1系統(tǒng)

3.A1系統(tǒng)拿著令牌通過一系列加密手段請求passport系統(tǒng),沒有問題就把用戶基本信息就給A1系統(tǒng)了。

4.A1系統(tǒng)做了跳轉(zhuǎn)到需要權(quán)限的界面。

5.張三之后又通過一個谷歌瀏覽器訪問了a2.xx.com系統(tǒng),a2系統(tǒng)就會走一遍a1的流程,區(qū)別在于跳轉(zhuǎn)到sso.xx.com時候,sso系統(tǒng)發(fā)現(xiàn)已經(jīng)登錄過了,a2系統(tǒng)就重新跳到了a2系統(tǒng)這個過程。

A1系統(tǒng)、A2系統(tǒng)也可以設(shè)計成無狀態(tài)的服務(wù),便于系統(tǒng)橫向擴展,讀取session采用共享session服務(wù)器(也可用由passport系統(tǒng)充當(dāng)),應(yīng)用服務(wù)器的狀態(tài)分離,分為無狀態(tài)的應(yīng)用服務(wù)器和有狀態(tài)的Session服務(wù)器,然后針對這兩種服務(wù)器的不同特性分別設(shè)計其架構(gòu)。


圖2
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容