關閉

騰訊工作心得:統一登錄的幾種常用設計模式

在公司內部,如果有多個項目,每個項目都有登錄,并且多個項目想要共用一套賬戶體系時,一般都會設計一個統一登錄服務來實現業務快速接入。下面講下做一個統一登錄服務需要考慮的點和幾種常用的設計模式。
在公司內部,如果有多個項目,每個項目都有登錄,并且多個項目想要共用一套賬戶體系時,一般都會設計一個統一登錄服務來實現業務快速接入。下面講下做一個統一登錄服務需要考慮的點和幾種常用的設計模式。

需要具備的基本要素

注:下文的業務側指需要接入統一登錄的業務方。

一個統一登錄的登錄流程:

攜帶參數發起登錄 -> 統一登錄認證 -> 重定向業務后端地址 -> 業務側注入登錄態 -> 業務側重定向到前端頁面

從登錄流程可以看出幾個核心要點:

1. 統一登錄認證

按道理統一登錄服務,不是隨隨便便一個業務都能接入的,比如公司外部的 惡意方堅決不能讓它接入。所以統一登錄必須要有來源的認證。

需要接入的業務方,一般會給它分配appId和appSecret,appId用于識別業務,比如appId=1表示是采購平臺,appId=2表示是審核平臺。

appSecret是業務方秘鑰,業務方需要使用密鑰通過算法計算簽名,只有統一登錄服務才能解出這個簽名,從而識別出是信任授權應用,應用認證才能通過。

當應用認證通過后,開始校驗用戶,如果是新用戶注冊,就把業務appId和用戶信息寫入數據庫,如果是老用戶則直接校驗數據庫數據,用戶校驗成功后,整個認證成功。

2. 認證成功后的跳轉

當認證成功后,統一服務會發起業務側url跳轉。

上面說的業務方攜帶參數發起登錄,這里的參數一般都有哪些呢?

appId、簽名、用戶信息、個性化數據、重定向地址 (appId和簽名上面已經說明用途)

重定向地址用于認證成功后的業務跳轉,一般是業務端的后臺地址,統一登錄會把用戶的信息透傳給業務側,業務側一般會做:登錄態注入相應的業務域名和做一些用戶數據初始化的操作。

個性化數據有什么用?當你訪問一個頁面時,登錄態失效后會自動退出到登錄頁面,當再次登錄成功時,按道理最好是跳轉到當初退出時的具體頁面。

個性化數據就是用于存放這個登錄退出前的前端頁面地址。統一登錄會透傳這個個性化數據到業務側,業務側注入登錄態成功后,會跳轉到這個前端頁面。

當然個性化數據還可以放置其他的一些業務側數據。

3. 異常處理

統一登錄的過程可能會有以下的異常,要注意做好錯誤碼和錯誤提示的返回。

1、應用未登記

指的是業務側沒有獲取統一登錄服務授權的appId和appSecret

2、用戶已存在

指的是數據庫里已經存在同一個用戶

3、用戶注冊信息不合法

4、認證超時

統一登錄的登錄認證一般都會做 “防重放” 的防御,意思就是業務側發送的簽名是有有效期的(有效期一般按秒計算),是為了防止惡意用戶利用算好的簽名重復多次登錄。

設計模式

1. 直接域名

統一登錄平臺直接提供一個統一登錄域名,當登錄態失效時,業務側重定向到統一登錄地址。

這種模式比較適用于公司內部的業務平臺。這種模式的缺點是靈活性低,根據具體業務做相應的UI定制化比較麻煩。

2. js-sdk

sdk的方式比較靈活,其實是把登錄的前端邏輯都封裝在一個js-sdk當中,包括UI、發起登錄請求等事件。需要接入的業務側,只要引入這個sdk就可以使用。

js-sdk一個比較好的優點是,在用戶引用它時,它可以把登錄界面以iframe的形式嵌入到業務頁面當中,可以自定義滿足一些業務登錄界面的個性化需求,比如a業務的登錄界面需要放置宣傳a業務的產品信息,可自定義登錄信息框的位置。
產品經理教程
a業務的統一登錄位置和宣傳信息
產品經理教程
b業務的統一登錄信息位置和宣傳信息

而且js-sdk還可以提供改變登錄樣式的接口,可以讓業務根據需求做些樣式調整,比如更改統一登錄信息框的背景圖、字體、間距等。

微信統一登錄也是使用的這種模式,這種模式適用于開放型平臺的第三方登錄

3. 網關

什么是網關?

大家都知道,從一個房間走到另一個房間,必然要經過一扇門。同樣,從一個網絡向另一個網絡發送信息,也必須經過一道“關口”,這道關口就是網關。

網關方式和上面兩種不一樣的地方是,它登錄態的注入域名是固定的,一般是多個子域名共用父域下的登錄態。舉個例子,a.oa.com和b.oa.com2個業務平臺的域名共用父域.oa.com下的登錄態。

網關的方式比較適合公司內部的公共資源平臺鑒權。

比如公司內部的oa系統、資源學習平臺、用戶信息平臺,在訪問公司內網平臺時會經過公司網關,統一登錄服務在網關這一層就做了攔截校驗,其一是校驗該業務是否接入了網關登錄服務,其二是校驗是否有登錄態,如果沒有則在網關層就直接重定向到統一登錄地址。

這是最簡單的設計模式,業務側只需要登記接入網關服務信息就可以使用,不需要像其他模式一樣還要引入sdk或者做重定向,缺點是沒法滿足業務定制化需求,比如定制化的UI登錄界面,登錄成功后業務側的業務初始化操作,登錄態父域名是固定的。

以上就是“騰訊工作心得:統一登錄的幾種常用設計模式”的內容了,如果你還想了解其他相關內容,可以來產品壹佰官方網站。

0條評論 添加新討論

登錄后參與討論
Ctrl+Enter 發表