用戶管理

互聯網業務的一個典型特徵就是通過互聯網將衆多分散的用戶連接起來,因此用戶管理是互聯網業務必不可少的一部分。

一、單點登錄SSO(Single Sign On)

說得簡單點就是在一個多系統共存的環境下,用戶在一處登錄後,就不用在其他系統中登錄,也就是用戶的一次登錄能得到其他所有系統的信任。

  • cookie
    用戶登錄父應用之後,應用返回一個加密的cookie,當用戶訪問子應用的時候,攜帶上這個cookie,授權應用解密cookie並進行校驗,校驗通過則登錄當前用戶。

存在的問題:不可跨域

  • JSONP:解決了不可跨域問題
    用戶在父應用中登錄後,跟Session匹配的Cookie會存到客戶端中,當用戶需要登錄子應用的時候,授權應用訪問父應用提供的JSONP接口,並在請求中帶上父應用域名下的Cookie,父應用接收到請求,驗證用戶的登錄狀態,返回加密的信息,子應用通過解析返回來的加密信息來驗證用戶,如果通過驗證則登錄用戶。
    在這裏插入圖片描述

  • 頁面重定向token
    通過父應用和子應用來回重定向中進行通信,實現信息的安全傳遞。
    父應用提供一個GET方式的登錄接口,用戶通過子應用重定向連接的方式訪問這個接口,如果用戶還沒有登錄,則返回一個的登錄頁面,用戶輸入賬號密碼進行登錄。如果用戶已經登錄了,則生成加密的Token,並且重定向到子應用提供的驗證Token的接口,通過解密和校驗之後,子應用登錄當前用戶。
    在這裏插入圖片描述

  • 目前最成熟的開源單點登錄方案CAS

二、授權登錄

當業務做大成爲了平臺後,開放成爲了促進業務進一步發展的手段,需要允許第三方應用接入,由此引申出用戶管理的第二個目標:授權登錄。現在最流行的授權登錄就是OAuth 2.0協議,基本上已經成爲了事實上的標準,如果要做開放平臺,則最好用這個協議,私有協議漏洞多,第三方接入也麻煩。

用戶管理系統面臨的主要問題是用戶數巨大,一般至少千萬級,QQ、微信、支付寶這種巨無霸應用都是億級用戶。不過也不要被這個數據給嚇倒了,用戶管理雖然數據量巨大,但實現起來並不難,原因是什麼呢?因爲用戶數據量雖然大,但是不同用戶之間沒有太強的業務關聯,A用戶登錄和B用戶登錄基本沒有關係。因此雖然數據量巨大,但我們用一個簡單的負載均衡架構就能輕鬆應對。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章