單點(diǎn)登錄最全詳解(圖文全面總結(jié))
單點(diǎn)登錄
單點(diǎn)登錄全程是Single Sign On,簡(jiǎn)稱 ”SSO“,是一種認(rèn)證機(jī)制,通過一次性驗(yàn)證用戶身份,提供對(duì)多個(gè)系統(tǒng)的訪問。
圖片
舉一個(gè)例子,比如:阿里集團(tuán)有多個(gè)網(wǎng)站,比如:淘寶、天貓........等等,如下圖所示:
圖片
單點(diǎn)登錄,就在淘寶、天貓、聚劃算...等的最外面,也就是說用戶登錄任何一個(gè)系統(tǒng),剩余系統(tǒng)都可以登錄。
也就說:只需一次登錄便,可訪問所有這些系統(tǒng),而無需在每個(gè)系統(tǒng)中重復(fù)登錄。
所以,單點(diǎn)登錄(SSO), 極大地簡(jiǎn)化了用戶的認(rèn)證過程,提升了用戶體驗(yàn)。
而且,通過統(tǒng)一的身份認(rèn)證,可以更好地控制、和審計(jì)用戶的訪問行為,減少密碼泄露的風(fēng)險(xiǎn)。
單點(diǎn)登錄實(shí)現(xiàn)原理
從上面知道了單點(diǎn)登錄的價(jià)值,下面如果是你,你應(yīng)該怎么來"實(shí)現(xiàn)單點(diǎn)登錄呢"?
單點(diǎn)登錄實(shí)現(xiàn),如下圖所示:
圖片
單點(diǎn)登錄通常通過,以下步驟來實(shí)現(xiàn):
Step 1: 用戶訪問應(yīng)用A
比如:用戶嘗試訪問系統(tǒng)、或應(yīng)用 A。
比如:用戶試圖訪問受保護(hù)資源,(例如:https://app.mikechen.cc/dashboard),該資源要求用戶進(jìn)行身份驗(yàn)證。
Step 2: 重定向到認(rèn)證服務(wù)器
應(yīng)用 A 檢查用戶是否已登錄,如果沒有登錄,應(yīng)用 A 會(huì)將用戶重定向到, SSO 認(rèn)證服務(wù)器。
比如:CAS客戶端,會(huì)將用戶的瀏覽器重定向到CAS服務(wù)器的登錄URL。
比如:https://cas.mikechen.cc/login?service=https://app.mikechen.cc/dashboard。
如下圖所示:
圖片
然后,用戶認(rèn)證
CAS服務(wù)器接受用戶的登錄請(qǐng)求,驗(yàn)證用戶的身份信息(如:用戶名、和密碼)。
如果驗(yàn)證成功,”SSO 服務(wù)器“,生成一個(gè)用于標(biāo)識(shí)該用戶的令牌(Token)。
然后,分發(fā)令牌
如果,認(rèn)證成功后,SSO 服務(wù)器會(huì)將令牌返回給應(yīng)用 A。
比如:CAS服務(wù)器,會(huì)生成一個(gè)Service Ticket(ST),這是一個(gè)一次性使用的票據(jù),用于CAS客戶端向CAS服務(wù)器驗(yàn)證用戶身份。
應(yīng)用 A 接收到令牌后,創(chuàng)建會(huì)話并允許用戶訪問資源。
最后,用戶在多個(gè)系統(tǒng)間切換
這個(gè)時(shí)候,當(dāng)用戶嘗試訪問系統(tǒng)、或應(yīng)用 B 時(shí),應(yīng)用 B 會(huì)向 SSO 服務(wù)器驗(yàn)證用戶身份。
如果用戶已經(jīng)在 SSO 服務(wù)器登錄,SSO 服務(wù)器會(huì)直接返回有效的令牌,無需再次輸入憑證。
最后,用戶在 SSO 系統(tǒng)內(nèi)的多個(gè)應(yīng)用之間切換時(shí),只需要一次登錄,后續(xù)訪問都會(huì)自動(dòng)通過。
單點(diǎn)登錄實(shí)現(xiàn)挑戰(zhàn)
單點(diǎn)故障
認(rèn)證中心成為關(guān)鍵點(diǎn),如果它出現(xiàn)問題,所有系統(tǒng)的認(rèn)證流程都會(huì)受影響。
比如:在SSO系統(tǒng)中,認(rèn)證中心(如CAS服務(wù)器)是所有用戶認(rèn)證的關(guān)鍵組件。
如果認(rèn)證中心出現(xiàn)故障,所有依賴它的應(yīng)用系統(tǒng)將無法完成用戶認(rèn)證,導(dǎo)致系統(tǒng)的訪問中斷。
比如:可以通過負(fù)載均衡器,將用戶請(qǐng)求分發(fā)到多個(gè)CAS服務(wù)器實(shí)例。
這樣,即使一個(gè)CAS服務(wù)器出現(xiàn)故障,負(fù)載均衡器可以將請(qǐng)求轉(zhuǎn)發(fā)到其他健康的服務(wù)器。
復(fù)雜性
實(shí)現(xiàn)和維護(hù)SSO系統(tǒng)比普通認(rèn)證系統(tǒng)復(fù)雜,涉及的協(xié)議和安全性要求較高。
比如:實(shí)現(xiàn)和維護(hù)SSO系統(tǒng)比普通的認(rèn)證系統(tǒng)復(fù)雜,涉及多個(gè)協(xié)議和安全性要求、
例如:CAS、OAuth2.0、SAML...等,每種協(xié)議有其獨(dú)特的配置要求和實(shí)現(xiàn)細(xì)節(jié),增加了系統(tǒng)的復(fù)雜性。
跨域問題
不同域名之間的SSO需要處理跨域通信問題,比如:通過CORS設(shè)置、或使用OAuth的授權(quán)碼模式。
單點(diǎn)登錄應(yīng)用
單點(diǎn)登錄適用于多種場(chǎng)景,常見的應(yīng)用場(chǎng)景包括:
企業(yè)內(nèi)部系統(tǒng)
企業(yè)通常擁有多個(gè)業(yè)務(wù)系統(tǒng),如:人力資源系統(tǒng)、財(cái)務(wù)系統(tǒng)、郵件系統(tǒng)...等。
通過 SSO,員工可以通過一次登錄訪問所有這些系統(tǒng),提高工作效率。
在線服務(wù)平臺(tái)
互聯(lián)網(wǎng)公司往往提供多個(gè)在線服務(wù),如:郵件、云存儲(chǔ)、社交網(wǎng)絡(luò)...等。
通過 SSO,用戶只需一次登錄即可訪問所有服務(wù),提供無縫體驗(yàn)。
電子商務(wù)系統(tǒng)
比如:上面我提到的,阿里包含:淘寶、天貓...等等系統(tǒng),通過 SSO,用戶可以通過一個(gè)賬號(hào)訪問所有這些服務(wù)。
總之,單點(diǎn)登錄(SSO)是一種解決多系統(tǒng)認(rèn)證問題的有效機(jī)制,通過一次登錄讓用戶無縫訪問多個(gè)系統(tǒng)。
單點(diǎn)登錄(SSO)的核心在于:集中式的認(rèn)證服務(wù)器(如 :CAS Server)管理用戶身份,并通過票據(jù)機(jī)制在不同應(yīng)用之間共享認(rèn)證信息。