單點登入 VS 多點登入

2022-07-27 12:03:11 字數 1414 閱讀 1835

2018-12-01   14:58:22

單點登入(single sign on),簡稱為 sso,是目前比較流行的企業業務整合的解決方案之一。sso的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。

概述:很早期的公司,一家公司可能只有乙個server,慢慢的server開始變多了。每個server都要進行註冊登入,退出的時候又要乙個個退出。使用者體驗很不好!你可以想象一下,上豆瓣 要登入豆瓣fm、豆瓣讀書、豆瓣電影、豆瓣日記......真的會讓人崩潰的。我們想要另一種登入體驗:一家企業下的服務只要一次註冊,登入的時候只要一次登入,退出的時候只要一次退出。怎麼做?

一次註冊。 一次註冊不難,想一下是不是只要server之間同步使用者資訊就行了?可以,但這樣描述不太完整,後續講使用者註冊的時候詳細說。實際上使用者資訊的管理才是sso真正的難點,只是作為初學者,我們的難點在於實現sso的技術!我們先討論實現手段。

一次登入與一次退出。 回頭看看普通商場的故事,什麼東西才是保持登入狀態關鍵的東西?記錄器(session)?那種叫做cookie的紙張?寫在紙張上的id? 是session裡面記錄的資訊跟那個id,cookie只不是記錄id的工具而已。客戶端持有id,服務端持有session,兩者一起用來保持登入狀態。客戶端需要用id來作為憑證,而服務端需要用session來驗證id的有效性(id可能過期、可能根本就是偽造的找不到對於的資訊、id下對應的客戶端還沒有進行登入驗證等)。但是session這東西一開始是每個server自己獨有的,豆瓣fm有自己的session、豆瓣讀書有自己的session,而記錄id的cookie又是不能跨域的。所以,我們要實現一次登入一次退出,只需要想辦法讓各個server的共用乙個session的資訊,讓客戶端在各個網域名稱下都能持有這個id就好了。再進一步講,只要各個server拿到同乙個id,都能有辦法檢驗出id的有效性、並且能得到id對應的使用者資訊就行了,也就是能檢驗id[1]  。

多點登入:

提問:什麼是多點登入?

需要注意的是,乙個端只能登入乙個例項,例如同乙個qq號,在pc1上登入,再到pc2上登入,後者會把前者踢出,pc1會收到通知「你已在別處登入xxoo」

提問:什麼是訊息漫遊?

回答:在任何乙個終端的任何乙個例項登入qq,都能夠拉取到所有歷史聊天訊息,這個就是訊息漫遊。

總結:「多點登入」是指多個端同時登入乙個帳號,同時收發訊息,關鍵點是:

(1)需要在服務端儲存同乙個使用者多個端的狀態與登陸點

(2)發出訊息時,要對傳送方的多端與接收端的多端,都進行訊息投遞

「訊息漫遊」是指乙個使用者在任何端,都可以拉取到歷史訊息,關鍵點是:

(1)所有訊息儲存在雲端

(2)每個端本地儲存last_msg_id,在登入時可以到雲端同步歷史訊息

(3)雲儲存所有訊息成本較高,一般會對歷史訊息時間(或者條數)進行限制

---------------------

原文:

單點登入(SSO)和多點登入

sso 單點登入 的概念 在乙個多系統共存的環境下,使用者在一處登入後,就不用再其他系統中登入,也就是使用者的一次登入能得到其他所有系統的信任。sso 單點登入 的應用場景 單點登入在大型 使用非常頻繁,例如阿里巴巴 在 的背後是成白上千的子系統,使用者的一次操作可能涉及到幾十個子系統的協作,如果每...

使用者登入 單點登入

首先是為啥要用單點登入的問題,單點登入也就是sso sso是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。1 任何系統都必須去登陸伺服器進行登入 2 伺服器就記住了登入狀態 3 其他系統訪問受保護資源,需要再次登入,跳轉到sso server登入的時候,伺服器告訴客戶端,已...

登入方案 使用者單點登入

在微服務專案中,由於使用者往往需要通過閘道器訪問多個微服務,如登入需要訪問使用者微服務,商品瀏覽需要訪問商品微服務,下單需要訪問訂單微服務,支付需要訪問支付微服務。但如何防止使用者操作其他使用者的資料,這就需要在各個微服務中增加授權認證。每個服務都要認證使用者的身份,身份認證成功後,需要識別使用者的...