您好,登錄后才能下訂單哦!
單點(diǎn)登錄的意思是什么?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
單點(diǎn)登錄SSO是指在多個(gè)應(yīng)用系統(tǒng)中,用戶(hù)只需要登錄一次就可以訪問(wèn)所有相互信任的應(yīng)用系統(tǒng),是企業(yè)業(yè)務(wù)整合的解決方案之一,其優(yōu)點(diǎn):1、提高用戶(hù)的效率;2、提高開(kāi)發(fā)人員的效率;3、簡(jiǎn)化管理。
很早期的公司,一家公司可能只有一個(gè)Server,慢慢的Server開(kāi)始變多了。每個(gè)Server都要進(jìn)行注冊(cè)登錄,退出的時(shí)候又要一個(gè)個(gè)退出。用戶(hù)體驗(yàn)很不好!你可以想象一下,上豆瓣 要登錄豆瓣FM、豆瓣讀書(shū)、豆瓣電影、豆瓣日記......真的會(huì)讓人崩潰的。我們想要另一種登錄體驗(yàn):一家企業(yè)下的服務(wù)只要一次注冊(cè),登錄的時(shí)候只要一次登錄,退出的時(shí)候只要一次退出。怎么做?
一次注冊(cè)。 一次注冊(cè)不難,想一下是不是只要Server之間同步用戶(hù)信息就行了?可以,但這樣描述不太完整,后續(xù)講用戶(hù)注冊(cè)的時(shí)候詳細(xì)說(shuō)。實(shí)際上用戶(hù)信息的管理才是SSO真正的難點(diǎn),只是作為初學(xué)者,我們的難點(diǎn)在于實(shí)現(xiàn)SSO的技術(shù)!我們先討論實(shí)現(xiàn)手段。
一次登錄與一次退出。 回頭看看普通商場(chǎng)的故事,什么東西才是保持登錄狀態(tài)關(guān)鍵的東西?記錄器(session)?那種叫做cookie的紙張?寫(xiě)在紙張上的ID? 是session里面記錄的信息跟那個(gè)ID,cookie不只是記錄ID的工具而已??蛻?hù)端持有ID,服務(wù)端持有session,兩者一起用來(lái)保持登錄狀態(tài)??蛻?hù)端需要用ID來(lái)作為憑證,而服務(wù)端需要用session來(lái)驗(yàn)證ID的有效性(ID可能過(guò)期、可能根本就是偽造的找不到對(duì)應(yīng)的信息、ID下對(duì)應(yīng)的客戶(hù)端還沒(méi)有進(jìn)行登錄驗(yàn)證等)。但是session這東西一開(kāi)始是每個(gè)server自己獨(dú)有的,豆瓣FM有自己的session、豆瓣讀書(shū)有自己的session,而記錄ID的cookie又是不能跨域的。所以,我們要實(shí)現(xiàn)一次登錄一次退出,只需要想辦法讓各個(gè)server的共用一個(gè)session的信息,讓客戶(hù)端在各個(gè)域名下都能持有這個(gè)ID就好了。再進(jìn)一步講,只要各個(gè)server拿到同一個(gè)ID,都能有辦法檢驗(yàn)出ID的有效性、并且能得到ID對(duì)應(yīng)的用戶(hù)信息就行了,也就是能檢驗(yàn)ID;
單點(diǎn)登錄實(shí)現(xiàn)方法
server端
以server群如何生成、驗(yàn)證ID的方式大致分為兩種:
“共享Cookie”這個(gè)就是上面提到的共享session的方式,我倒覺(jué)得叫“共享session”來(lái)得好一點(diǎn),本質(zhì)上cookie只是存儲(chǔ)session-id的介質(zhì),session-id也可以放在每一次請(qǐng)求的url里。據(jù)說(shuō)這種方式不安全,我沒(méi)去細(xì)究,哪位大神可以推薦下相關(guān)的資料,我后期補(bǔ)上。其實(shí)也是,畢竟session這項(xiàng)機(jī)制一開(kāi)始就是一個(gè)server一個(gè)session的,把session拿出來(lái)讓所有server共享確實(shí)有點(diǎn)奇怪。
SSO-Token方式因?yàn)楣蚕韘ession的方式不安全,所以我們不再以session-id作為身份的標(biāo)識(shí)。我們另外生成一種標(biāo)識(shí),把它取名SSO-Token(或Ticket),這種標(biāo)識(shí)是整個(gè)server群唯一的,并且所有server群都能驗(yàn)證這個(gè)token,同時(shí)能拿到token背后代表的用戶(hù)的信息。我們要討論的也是這種方式,一會(huì)上具體流程圖。
瀏覽器端
單點(diǎn)登錄還有非常關(guān)鍵的一步,這一步跟server端驗(yàn)證token的方式無(wú)關(guān),用最早的“共享session”的方式還是現(xiàn)在的“token”方式,身份標(biāo)識(shí)到了瀏覽器端都要面臨這樣的一個(gè)問(wèn)題:用戶(hù)登錄成功拿到token(或者是session-id)后怎么讓瀏覽器存儲(chǔ)和分享到其它域名下?同域名很簡(jiǎn)單,把token存在cookie里,把cookie的路徑設(shè)置成頂級(jí)域名下,這樣所有子域都能讀取cookie中的token。這就是共享cookie的方式(這才叫共享Cookie嘛,上面那個(gè)應(yīng)該叫共享session)。比如:谷歌公司,google.com是他的頂級(jí)域名,郵箱服務(wù)的mail.google.com和地圖服務(wù)的map.google.com都是它的子域。但是,跨域的時(shí)候怎么辦?谷歌公司還有一個(gè)域名,youtube.com,提供視頻服務(wù) 。
看完上述內(nèi)容,你們掌握單點(diǎn)登錄的意思是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。