最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

什么是單點(diǎn)登錄?

2022-01-16 13:25 作者:迪巴哥沒八哥  | 我要投稿


講單點(diǎn)登錄前,我們先來說說協(xié)議。

一、單系統(tǒng)登錄機(jī)制

1、http無狀態(tài)協(xié)議

web應(yīng)用采用browser/server架構(gòu),http作為通信協(xié)議。http是無狀態(tài)協(xié)議,瀏覽器每次請(qǐng)求,服務(wù)器會(huì)獨(dú)立處理,不與前后請(qǐng)求產(chǎn)生關(guān)聯(lián),此過程用下圖說明,三次請(qǐng)求之間沒有任何聯(lián)系。


但這意味著,任何用戶能通過瀏覽器訪問服務(wù)器資源,如果想保護(hù)服務(wù)器某些資源,必須限制瀏覽器請(qǐng)求,鑒別瀏覽器請(qǐng)求合法請(qǐng)求,忽略非法請(qǐng)求,http協(xié)議是無狀態(tài)的,可以讓服務(wù)器與瀏覽器維護(hù)一個(gè)狀態(tài),這就是會(huì)話機(jī)制。

2、會(huì)話機(jī)制

瀏覽器第一次請(qǐng)求服務(wù)器,服務(wù)器創(chuàng)建一個(gè)會(huì)話,將會(huì)話id作為響應(yīng)一部分發(fā)送給瀏覽器,瀏覽器存儲(chǔ)會(huì)話id,在后續(xù)二次與三次請(qǐng)求帶上會(huì)話id,服務(wù)器取得請(qǐng)求會(huì)話id可知道是否為同一用戶,過程用下圖說明,后續(xù)請(qǐng)求與第一次產(chǎn)生關(guān)聯(lián)。


服務(wù)器在內(nèi)存中保存會(huì)話對(duì)象,瀏覽器怎么保存會(huì)話id?可以有如下方式。

1、請(qǐng)求參數(shù)

2、cookie

會(huì)話id作為請(qǐng)求參數(shù),服務(wù)器接收請(qǐng)求能解析參數(shù)獲得會(huì)話id,可以借此判斷是否來自同一會(huì)話,但是這會(huì)給服務(wù)器造成太大壓力。

我們可以讓瀏覽器維護(hù)這個(gè)會(huì)話id,每次發(fā)送http請(qǐng)求瀏覽器自動(dòng)發(fā)送會(huì)話id,ookie機(jī)制可以來做此事,cookie是瀏覽器用來存儲(chǔ)少量數(shù)據(jù)的機(jī)制,數(shù)據(jù)以“key/value”形式存儲(chǔ),瀏覽器發(fā)送http請(qǐng)求時(shí)自帶cookie信息。

tomcat會(huì)話機(jī)制實(shí)現(xiàn)了cookie,訪問tomat服務(wù)器,瀏覽器可看到一個(gè)名為“JSESSIONID”的cookie,這是tomcat會(huì)話機(jī)制維護(hù)的會(huì)話id,使用cookie的請(qǐng)求響應(yīng)過程如下圖。


3、登錄狀態(tài)

我們假設(shè)瀏覽器第一次請(qǐng)求服務(wù)器需要輸入用戶名與密碼驗(yàn)證身份,服務(wù)器拿到用戶名密碼去數(shù)據(jù)庫(kù)比對(duì)。

正確的話當(dāng)前持有會(huì)話的用戶是合法用戶,應(yīng)把會(huì)話標(biāo)記為‘"已授權(quán)"或“已登錄”之類狀態(tài),既然是會(huì)話狀態(tài),自然要保存在會(huì)話對(duì)象中,tomcat在會(huì)話對(duì)象中設(shè)置如下登錄狀態(tài)。


登錄狀態(tài)瀏覽器請(qǐng)求服務(wù)器模型如下圖描述:


每次請(qǐng)求受保護(hù)資源檢查會(huì)話對(duì)象中的登錄狀態(tài),只有isLogin=true會(huì)話才能訪問,登錄機(jī)制因此實(shí)現(xiàn)。

二、多系統(tǒng)復(fù)雜性

web系統(tǒng)從單系統(tǒng)發(fā)展為今天的多系統(tǒng)組成的應(yīng)用群,面對(duì)眾多系統(tǒng),用戶如果一個(gè)個(gè)登錄,會(huì)很麻煩,如下圖一樣。


web系統(tǒng)由單系統(tǒng)發(fā)展成多系統(tǒng)組成應(yīng)用群,復(fù)雜性不應(yīng)該由用戶買單,對(duì)用戶而言訪問web系統(tǒng)整個(gè)應(yīng)用群與訪問單個(gè)系統(tǒng)一樣,登陸注銷一次就行了。



單系統(tǒng)登錄看似完美,但多系統(tǒng)應(yīng)用群已經(jīng)不再適用。

單系統(tǒng)登錄方案核心是cookie,cookie攜帶會(huì)話id再瀏覽器與服務(wù)器之間維護(hù)會(huì)話狀態(tài)。但是cookie是有限的,此限制是cookie的域,瀏覽器發(fā)送http請(qǐng)求攜帶與該域【匹配的cookie,而不是所有cookie。


這樣我們似乎可以將web應(yīng)用群所有子系統(tǒng)域名統(tǒng)一在一個(gè)頂級(jí)域名下,如“*.baidu.com”,然后把cookie域設(shè)置為“baidu.com”,此說法理論可以,早期很多系統(tǒng)登錄采用同域名共享cookie方式。

共享cookie方式有很多限制,首先,應(yīng)用群域名得統(tǒng)一,其次,應(yīng)用群各系統(tǒng)技術(shù)要相同,不然cookie的key值不同,無法維持會(huì)話,共享cookie方式無法實(shí)現(xiàn)跨語(yǔ)言技術(shù)平臺(tái)登錄,如ajva、php’.net系統(tǒng)之間;第三,cookie本身不安全。

因此,我們需要全新登錄方式實(shí)現(xiàn)多系統(tǒng)應(yīng)用群登錄,這就是單點(diǎn)登錄。

三、單點(diǎn)登錄

何為單點(diǎn)等點(diǎn)登錄? 單點(diǎn)登錄全稱Single Sign On(簡(jiǎn)稱SSO),指的是在多系統(tǒng)應(yīng)用群登錄一個(gè)系統(tǒng),便可在其他系統(tǒng)得到授權(quán)而無需再次登錄,包括單點(diǎn)登錄與單點(diǎn)注銷等。

1、登錄

相比單系統(tǒng)登錄,sso需要獨(dú)立的認(rèn)證中心,只有認(rèn)證中心能接受用戶名密碼等安全信息,其他系統(tǒng)不提供入口,只接受認(rèn)證中心的間接授權(quán)。

間接授權(quán)通過令牌實(shí)現(xiàn),sso認(rèn)證中心驗(yàn)證用戶用戶密碼沒問題,創(chuàng)建授權(quán)令牌,在接下來跳轉(zhuǎn)中,授權(quán)令牌作為參數(shù)發(fā)送給各個(gè)子系統(tǒng)。

子系統(tǒng)拿到令牌,得到授權(quán),借此創(chuàng)建局部會(huì)話,局部會(huì)話登錄方式與單系統(tǒng)登錄方式相同。此過程就是單點(diǎn)登錄原理,如下圖:


上圖概述:

  1. 用戶訪問系統(tǒng)1的受保護(hù)資源,系統(tǒng)1發(fā)現(xiàn)用戶未登錄,跳轉(zhuǎn)至sso認(rèn)證中心,并將自己的地址作為參數(shù)

  2. sso認(rèn)證中心發(fā)現(xiàn)用戶未登錄,將用戶引導(dǎo)至登錄頁(yè)面

  3. 用戶輸入用戶名密碼提交登錄申請(qǐng)

  4. sso認(rèn)證中心校驗(yàn)用戶信息,創(chuàng)建用戶與sso認(rèn)證中心之間的會(huì)話,稱為全局會(huì)話,同時(shí)創(chuàng)建授權(quán)令牌

  5. sso認(rèn)證中心帶著令牌跳轉(zhuǎn)會(huì)最初的請(qǐng)求地址(系統(tǒng)1)

  6. 系統(tǒng)1拿到令牌,去sso認(rèn)證中心校驗(yàn)令牌是否有效

  7. sso認(rèn)證中心校驗(yàn)令牌,返回有效,注冊(cè)系統(tǒng)1

  8. 系統(tǒng)1使用該令牌創(chuàng)建與用戶的會(huì)話,稱為局部會(huì)話,返回受保護(hù)資源

  9. 用戶訪問系統(tǒng)2的受保護(hù)資源

  10. 系統(tǒng)2發(fā)現(xiàn)用戶未登錄,跳轉(zhuǎn)至sso認(rèn)證中心,并將自己的地址作為參數(shù)

  11. sso認(rèn)證中心發(fā)現(xiàn)用戶已登錄,跳轉(zhuǎn)回系統(tǒng)2的地址,并附上令牌

  12. 系統(tǒng)2拿到令牌,去sso認(rèn)證中心校驗(yàn)令牌是否有效

  13. sso認(rèn)證中心校驗(yàn)令牌,返回有效,注冊(cè)系統(tǒng)2

  14. 系統(tǒng)2使用該令牌創(chuàng)建與用戶的局部會(huì)話,返回受保護(hù)資源

  用戶登錄成功之后,會(huì)與sso認(rèn)證中心及各個(gè)子系統(tǒng)建立會(huì)話,用戶與sso認(rèn)證中心建立的會(huì)話稱為全局會(huì)話,用戶與各個(gè)子系統(tǒng)建立的會(huì)話稱為局部會(huì)話,局部會(huì)話建立之后,用戶訪問子系統(tǒng)受保護(hù)資源將不再通過sso認(rèn)證中心,全局會(huì)話與局部會(huì)話有如下約束關(guān)系

  1. 局部會(huì)話存在,全局會(huì)話一定存在

  2. 全局會(huì)話存在,局部會(huì)話不一定存在

  3. 全局會(huì)話銷毀,局部會(huì)話必須銷毀

2、注銷

單點(diǎn)登錄自然要單點(diǎn)注銷,在一個(gè)子系統(tǒng)中注銷,所有子系統(tǒng)會(huì)話被注銷,用下圖說明。


sso認(rèn)證中心一直監(jiān)聽全局會(huì)話狀態(tài),一旦全局會(huì)話銷毀,監(jiān)聽器通知所有注冊(cè)系統(tǒng)執(zhí)行注銷操作。

對(duì)上圖簡(jiǎn)要說明:

  1. 用戶向系統(tǒng)1發(fā)起注銷請(qǐng)求

  2. 系統(tǒng)1根據(jù)用戶與系統(tǒng)1建立的會(huì)話id拿到令牌,向sso認(rèn)證中心發(fā)起注銷請(qǐng)求

  3. sso認(rèn)證中心校驗(yàn)令牌有效,銷毀全局會(huì)話,同時(shí)取出所有用此令牌注冊(cè)的系統(tǒng)地址

  4. sso認(rèn)證中心向所有注冊(cè)系統(tǒng)發(fā)起注銷請(qǐng)求

  5. 各注冊(cè)系統(tǒng)接收sso認(rèn)證中心的注銷請(qǐng)求,銷毀局部會(huì)話

  6. sso認(rèn)證中心引導(dǎo)用戶至登錄頁(yè)面

四、部署圖

單點(diǎn)登錄涉及sso認(rèn)證中心與眾子系統(tǒng),子系統(tǒng)與sso認(rèn)證中心需要通信交換令牌、校驗(yàn)令牌發(fā)起注銷請(qǐng)求,因而子系統(tǒng)必須集成sso客戶端。

sso認(rèn)證中心是sso服務(wù)端,整個(gè)單點(diǎn)登錄過程是sso客戶端與服務(wù)端通信過程,見下圖:


轉(zhuǎn)載自:https://www.cnblogs.com/ywlaker/p/6113927.html#!comments

什么是單點(diǎn)登錄?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
威信县| 西安市| 北海市| 布尔津县| 新竹市| 普兰县| 汶川县| 西充县| 忻城县| 洛阳市| 博爱县| 南通市| 崇文区| 莱西市| 芮城县| 麟游县| 通城县| 淳安县| 兰坪| 资阳市| 咸宁市| 鄂托克前旗| 岐山县| 曲周县| 海南省| 海城市| 纳雍县| 牙克石市| 翁源县| 朝阳区| 务川| 大冶市| 泾川县| 讷河市| 黔江区| 军事| 永定县| 新兴县| 尼勒克县| 乌兰县| 密云县|