摘要:用戶登錄成功之后,會(huì)與認(rèn)證中心及各個(gè)子系統(tǒng)建立會(huì)話,用戶與認(rèn)證中心建立的會(huì)話稱(chēng)為全局會(huì)話,用戶與各個(gè)子系統(tǒng)建立的會(huì)話稱(chēng)為局部會(huì)話。
一、單點(diǎn)登錄概念在工作中,有這樣一個(gè)需求,因?yàn)楣居卸鄠€(gè)管理平臺(tái),每次登錄一個(gè)平臺(tái)都需要輸入賬號(hào)和密碼進(jìn)行登錄,特別麻煩,所以,希望只需登錄一個(gè)平臺(tái)的賬號(hào)和密碼,其他平臺(tái)的不用輸入賬號(hào)和密碼也可以自動(dòng)登錄,即單點(diǎn)登錄,經(jīng)過(guò)兩周的研究和實(shí)踐,終于完成了該需求,目前公司的兩個(gè)管理平臺(tái)已經(jīng)實(shí)現(xiàn)了單點(diǎn)登錄,現(xiàn)將兩周的研究成果總結(jié)一下。
什么是單點(diǎn)登錄?單點(diǎn)登錄全稱(chēng) Single Sign On(以下簡(jiǎn)稱(chēng)SSO),是指在多系統(tǒng)應(yīng)用群中登錄一個(gè)系統(tǒng),便可在其他所有系統(tǒng)中得到授權(quán)而無(wú)需再次登錄,包括單點(diǎn)登錄與單點(diǎn)注銷(xiāo)兩部分。
二、單點(diǎn)登錄的兩種方式 1.同域名共享cookie用戶登錄成功之后,會(huì)與sso認(rèn)證中心及各個(gè)子系統(tǒng)建立會(huì)話,用戶與sso認(rèn)證中心建立的會(huì)話稱(chēng)為全局會(huì)話,用戶與各個(gè)子系統(tǒng)建立的會(huì)話稱(chēng)為局部會(huì)話。
如果你的所有平臺(tái)都是在同一個(gè)域名下,那么可以使用同域名共享cookie的方式來(lái)完成單點(diǎn)登錄的信息共享。
將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ù)(至少是web服務(wù)器)要相同,不然cookie的key值(tomcat為JSESSIONID)不同,無(wú)法維持會(huì)話,共享cookie的方式是無(wú)法實(shí)現(xiàn)跨語(yǔ)言技術(shù)平臺(tái)登錄的,比如java、php、.net系統(tǒng)之間;第三,cookie本身不安全。
因此,我們需要一種全新的登錄方式來(lái)實(shí)現(xiàn)多系統(tǒng)應(yīng)用群的登錄,這就是單點(diǎn)登錄
2、SSO認(rèn)證授權(quán)登錄上一種方法有很大的局限性,如果跨域名,就實(shí)現(xiàn)不了,這里我們可以借助第三方授權(quán)來(lái)實(shí)現(xiàn)。要實(shí)現(xiàn)多個(gè)平臺(tái)單點(diǎn)登錄,前提是多個(gè)平臺(tái)必須要有一個(gè)唯一的賬號(hào),如手機(jī)號(hào),郵箱,或用戶名,這樣才可以判斷出是哪個(gè)用戶。
具體實(shí)現(xiàn)思路假如公司有兩個(gè)不同域名或IP下的管理網(wǎng)站,a.com,b.com,我們想要輸入用戶名和密碼登錄a.com, 即可自動(dòng)登錄b.com,怎么實(shí)現(xiàn)呢?
登錄a.com后會(huì)在a平臺(tái)產(chǎn)生會(huì)話信息,如果我們登錄b.com,怎么判斷該用戶已經(jīng)登錄a平臺(tái)了,然后自己登錄?這里我們需要借助第三方平臺(tái)來(lái)做授權(quán)驗(yàn)證,即c.com,該授權(quán)中心維護(hù)一套共有的賬號(hào)和密碼,當(dāng)用戶訪問(wèn) a.com 后,我們會(huì)跳轉(zhuǎn)到 c.com,并帶上a.com 這個(gè)來(lái)源訪問(wèn)地址,在c.com 中判斷是否有登錄,如果未登錄,則給出登錄界面,登錄成功后,則產(chǎn)生會(huì)話信息,同時(shí)生成一個(gè)授權(quán)Token,保存在c.com cookie 中,然后返回給原地址,如果已經(jīng)登錄(即已經(jīng)授權(quán)過(guò)了),則拿到cookie中保存的Token信息然后回跳到原來(lái)的訪問(wèn)地址,a.com 判斷有Token信息,則拿著這個(gè)Token發(fā)送http請(qǐng)求到c.com,判斷該Token是否有效,如果有效,則返回給用戶信息,然后a.com拿到信息后,自動(dòng)登錄a.com;
當(dāng)訪問(wèn) b.com 時(shí),也會(huì)去 c.com 中判斷是否已經(jīng)授權(quán)過(guò)了,因?yàn)閍.com 已經(jīng)授過(guò)權(quán)了,則會(huì)給b.com 返回授權(quán)Token,然后b.com 判斷該Token是否有效,如果有效,則會(huì)返回給用戶信息,b.com 自動(dòng)登錄,這就是單點(diǎn)登錄的一個(gè)簡(jiǎn)單的流程。
一個(gè)完整的流程圖:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/25571.html
摘要:上一篇文章簡(jiǎn)單介紹了在本地開(kāi)發(fā)環(huán)境中搭建服務(wù)端和客戶端,對(duì)單點(diǎn)登錄過(guò)程有了一個(gè)直觀的認(rèn)識(shí)之后,本篇將探討單點(diǎn)登錄的實(shí)現(xiàn)原理。因此引入服務(wù)端作為用戶信息鑒別和傳遞中介,達(dá)到單點(diǎn)登錄的效果。為該流程的實(shí)現(xiàn)類(lèi)。表示對(duì)返回結(jié)果的處理。 上一篇文章簡(jiǎn)單介紹了 CAS 5.2.2 在本地開(kāi)發(fā)環(huán)境中搭建服務(wù)端和客戶端,對(duì)單點(diǎn)登錄過(guò)程有了一個(gè)直觀的認(rèn)識(shí)之后,本篇將探討 CAS 單點(diǎn)登錄的實(shí)現(xiàn)原理。 一...
摘要:兩個(gè)域之間是不是存在跨域問(wèn)題,主要是根據(jù)協(xié)議域名端口號(hào)這三個(gè)點(diǎn)進(jìn)行判斷,只要有一個(gè)不一樣就是跨域。例如協(xié)議不同與域名不同與端口號(hào)不同與瀏覽器默認(rèn)情況下無(wú)法主動(dòng)跨域向后端發(fā)送,需要在前端請(qǐng)求時(shí)加入配置項(xiàng)。據(jù)此,可以實(shí)現(xiàn)單點(diǎn)登錄。 cookie是什么 cookie的英文意思是餅干。在計(jì)算機(jī)術(shù)語(yǔ)中指服務(wù)端存放在客戶端的一段數(shù)據(jù)。這段數(shù)據(jù)在客戶端每次進(jìn)行http請(qǐng)求時(shí)會(huì)自動(dòng)加在http請(qǐng)求報(bào)文...
摘要:兩個(gè)域之間是不是存在跨域問(wèn)題,主要是根據(jù)協(xié)議域名端口號(hào)這三個(gè)點(diǎn)進(jìn)行判斷,只要有一個(gè)不一樣就是跨域。例如協(xié)議不同與域名不同與端口號(hào)不同與瀏覽器默認(rèn)情況下無(wú)法主動(dòng)跨域向后端發(fā)送,需要在前端請(qǐng)求時(shí)加入配置項(xiàng)。據(jù)此,可以實(shí)現(xiàn)單點(diǎn)登錄。 cookie是什么 cookie的英文意思是餅干。在計(jì)算機(jī)術(shù)語(yǔ)中指服務(wù)端存放在客戶端的一段數(shù)據(jù)。這段數(shù)據(jù)在客戶端每次進(jìn)行http請(qǐng)求時(shí)會(huì)自動(dòng)加在http請(qǐng)求報(bào)文...
摘要:如果一旦加密算法泄露了,攻擊者可以在本地建立一個(gè)實(shí)現(xiàn)了登錄接口的假冒父應(yīng)用,通過(guò)綁定來(lái)把子應(yīng)用發(fā)起的請(qǐng)求指向本地的假冒父應(yīng)用,并作出回應(yīng)。 1.什么是單點(diǎn)登錄? 單點(diǎn)登錄(Single Sign On),簡(jiǎn)稱(chēng)為 SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問(wèn)所有相互信任的應(yīng)用系統(tǒng)。客戶端持有ID,服務(wù)端持有session...
閱讀 847·2021-11-09 09:47
閱讀 1654·2019-08-30 15:44
閱讀 1196·2019-08-26 13:46
閱讀 2178·2019-08-26 13:41
閱讀 1367·2019-08-26 13:32
閱讀 3848·2019-08-26 10:35
閱讀 3597·2019-08-23 17:16
閱讀 517·2019-08-23 17:07