單點登錄的三種實現(xiàn)方式

單點登錄SSO(Single Sign On)說得簡單點就是在一個多系統(tǒng)共存的環(huán)境下沸移,用戶在一處登錄后,就不用在其他系統(tǒng)中登錄,也就是用戶的一次登錄能得到其他所有系統(tǒng)的信任。單點登錄在大型網(wǎng)站里使用得非常頻繁揍庄,例如像阿里巴巴這樣的網(wǎng)站咆蒿,在網(wǎng)站的背后是成百上千的子系統(tǒng)东抹,用戶一次操作或交易可能涉及到幾十個子系統(tǒng)的協(xié)作,如果每個子系統(tǒng)都需要用戶認證沃测,不僅用戶會瘋掉缭黔,各子系統(tǒng)也會為這種重復認證授權的邏輯搞瘋掉。實現(xiàn)單點登錄說到底就是要解決如何產(chǎn)生和存儲那個信任蒂破,再就是其他系統(tǒng)如何驗證這個信任的有效性馏谨,因此要點也就以下兩個:

  • 存儲信任
  • 驗證信任

如果一個系統(tǒng)做到了開頭所講的效果,也就算單點登錄附迷,單點登錄有不同的實現(xiàn)方式惧互,本文就羅列我開發(fā)中所遇見過的實現(xiàn)方式。

以Cookie作為憑證媒介

最簡單的單點登錄實現(xiàn)方式喇伯,是使用cookie作為媒介喊儡,存放用戶憑證。
用戶登錄父應用之后稻据,應用返回一個加密的cookie艾猜,當用戶訪問子應用的時候,攜帶上這個cookie捻悯,授權應用解密cookie并進行校驗匆赃,校驗通過則登錄當前用戶。

Auth via cookie

不難發(fā)現(xiàn)以上方式把信任存儲在客戶端的Cookie中今缚,這種方式很容易令人質疑:

  • Cookie不安全
  • 不能跨域實現(xiàn)免登

對于第一個問題算柳,通過加密Cookie可以保證安全性,當然這是在源代碼不泄露的前提下姓言。如果Cookie的加密算法泄露埠居,攻擊者通過偽造Cookie則可以偽造特定用戶身份查牌,這是很危險的。
對于第二個問題滥壕,更是硬傷纸颜。

通過JSONP實現(xiàn)

對于跨域問題,可以使用JSONP實現(xiàn)绎橘。
用戶在父應用中登錄后胁孙,跟Session匹配的Cookie會存到客戶端中,當用戶需要登錄子應用的時候称鳞,授權應用訪問父應用提供的JSONP接口涮较,并在請求中帶上父應用域名下的Cookie,父應用接收到請求冈止,驗證用戶的登錄狀態(tài)狂票,返回加密的信息,子應用通過解析返回來的加密信息來驗證用戶熙暴,如果通過驗證則登錄用戶闺属。

Auth via jsonp

這種方式雖然能解決跨域問題,但是安全性其實跟把信任存儲到Cookie是差不多的周霉。如果一旦加密算法泄露了掂器,攻擊者可以在本地建立一個實現(xiàn)了登錄接口的假冒父應用,通過綁定Host來把子應用發(fā)起的請求指向本地的假冒父應用俱箱,并作出回應国瓮。
因為攻擊者完全可以按照加密算法來偽造響應請求,子應用接收到這個響應之后一樣可以通過驗證狞谱,并且登錄特定用戶乃摹。

通過頁面重定向的方式

最后一種介紹的方式,是通過父應用和子應用來回重定向中進行通信跟衅,實現(xiàn)信息的安全傳遞孵睬。
父應用提供一個GET方式的登錄接口,用戶通過子應用重定向連接的方式訪問這個接口与斤,如果用戶還沒有登錄肪康,則返回一個的登錄頁面,用戶輸入賬號密碼進行登錄撩穿。如果用戶已經(jīng)登錄了磷支,則生成加密的Token,并且重定向到子應用提供的驗證Token的接口食寡,通過解密和校驗之后雾狈,子應用登錄當前用戶。

Auth via redirect

這種方式較前面兩種方式抵皱,接解決了上面兩種方法暴露出來的安全性問題和跨域的問題善榛,但是并沒有前面兩種方式方便辩蛋。
安全與方便,本來就是一對矛盾移盆。

使用獨立登錄系統(tǒng)

一般說來悼院,大型應用會把授權的邏輯與用戶信息的相關邏輯獨立成一個應用,稱為用戶中心咒循。
用戶中心不處理業(yè)務邏輯据途,只是處理用戶信息的管理以及授權給第三方應用。第三方應用需要登錄的時候叙甸,則把用戶的登錄請求轉發(fā)給用戶中心進行處理颖医,用戶處理完畢返回憑證,第三方應用驗證憑證裆蒸,通過后就登錄用戶熔萧。


如果本文對您有用
請不要吝嗇你們的Follow與Start
這會大大支持我們繼續(xù)創(chuàng)作

「Github」
MZMonster :@MZMonster
JC_Huang :@JerryC8080

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市僚祷,隨后出現(xiàn)的幾起案子佛致,更是在濱河造成了極大的恐慌,老刑警劉巖久妆,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晌杰,死亡現(xiàn)場離奇詭異跷睦,居然都是意外死亡筷弦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門抑诸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烂琴,“玉大人,你說我怎么就攤上這事蜕乡〖楸粒” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵层玲,是天一觀的道長号醉。 經(jīng)常有香客問我,道長辛块,這世上最難降的妖魔是什么畔派? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮润绵,結果婚禮上线椰,老公的妹妹穿的比我還像新娘。我一直安慰自己尘盼,他們只是感情好憨愉,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布烦绳。 她就那樣靜靜地躺著,像睡著了一般配紫。 火紅的嫁衣襯著肌膚如雪径密。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天躺孝,我揣著相機與錄音睹晒,去河邊找鬼。 笑死括细,一個胖子當著我的面吹牛伪很,可吹牛的內容都是我干的。 我是一名探鬼主播奋单,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锉试,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了览濒?” 一聲冷哼從身側響起呆盖,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贷笛,沒想到半個月后应又,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡乏苦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年株扛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汇荐。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡洞就,死狀恐怖,靈堂內的尸體忽然破棺而出掀淘,到底是詐尸還是另有隱情旬蟋,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布革娄,位于F島的核電站倾贰,受9級特大地震影響,放射性物質發(fā)生泄漏拦惋。R本人自食惡果不足惜匆浙,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望架忌。 院中可真熱鬧吞彤,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至埋嵌,卻和暖如春破加,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雹嗦。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工范舀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人了罪。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓锭环,卻偏偏與公主長得像,于是被迫代替她去往敵國和親泊藕。 傳聞我的和親對象是個殘疾皇子辅辩,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內容

  • 單點登錄(SSO——Single Sign On)對于我們來說已經(jīng)不陌生了。對于大型系統(tǒng)來說使用單點登錄可以減少用...
    無灃閱讀 3,302評論 2 18
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理娃圆,服務發(fā)現(xiàn)玫锋,斷路器,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,162評論 25 707
  • 本文分兩部分 1.轉他人的文章讼呢,詳細介紹了跨站單點登錄的原理和解決方案 2.我自己寫代碼撩鹿,著重介紹里面的重點部分 ...
    dragonwarrior閱讀 11,219評論 0 6
  • 今天因為兒子班級是早鍛煉,兒子要求要早些到校悦屏,最好第一個到運動場上节沦,讓他跑個夠。 出門窜管,兒子在車上吃早餐散劫,看到外面...
    迎新閱讀 522評論 7 4