單點(diǎn)登錄
單點(diǎn)登錄即SSO(Single Sign-On),是一種統(tǒng)一認(rèn)證和授權(quán)機(jī)制,指訪問同一服務(wù)器不同應(yīng)用中的受保護(hù)資源的同一用戶,只需要登錄一次,即通過一個(gè)應(yīng)用中的安全驗(yàn)證后,再訪問其他應(yīng)用中的受保護(hù)資源時(shí),不需要重新登錄驗(yàn)證。
單點(diǎn)登錄解決了什么問題
解決用戶只需要登錄偶一次就可以訪問所有相互信任的應(yīng)用系統(tǒng),而不用重復(fù)登錄。
單點(diǎn)登錄的技術(shù)實(shí)現(xiàn)機(jī)制
當(dāng)用戶第一次訪問應(yīng)用系統(tǒng)1的時(shí)候,因?yàn)檫€沒有登錄,會(huì)被引導(dǎo)到認(rèn)證系統(tǒng)中進(jìn)行登錄;根據(jù)用戶提供的登錄信息,認(rèn)證系統(tǒng)進(jìn)行身份校驗(yàn),如果通過校驗(yàn),應(yīng)用返回給用戶一個(gè)認(rèn)證的憑據(jù)--ticket;用戶再訪問別的應(yīng)用的時(shí)候,就會(huì)將這個(gè)ticket帶上,作為自己認(rèn)證的憑據(jù),應(yīng)用系統(tǒng)接受到請(qǐng)求之后會(huì)把ticket總到認(rèn)證系統(tǒng)進(jìn)行校驗(yàn),檢查ticket的合法性(4,6)。如果通過校驗(yàn),用戶接可以在不用再次得了的情況下訪問應(yīng)用系統(tǒng)2和應(yīng)用系統(tǒng)3了。
從上圖可以看出SSO的實(shí)現(xiàn)技術(shù)點(diǎn):
所有應(yīng)用系統(tǒng)共享一個(gè)身份驗(yàn)證系統(tǒng)
統(tǒng)一的認(rèn)證系統(tǒng)是SSO對(duì)的前提之一。認(rèn)證系統(tǒng)的主要功能是將用戶的登錄信息和用戶信息庫相比較,對(duì)用戶進(jìn)行登錄認(rèn)證;認(rèn)證成功后,認(rèn)證系統(tǒng)應(yīng)該生成統(tǒng)一的認(rèn)證標(biāo)志(ticket),返還給用戶。另外,認(rèn)證系統(tǒng)還應(yīng)該對(duì)ticket進(jìn)行校驗(yàn),判斷其有效性。所有應(yīng)用系統(tǒng)能夠識(shí)別和提取ticket信息
要實(shí)現(xiàn)SSO的功能,讓用戶只登錄一次,就必須讓應(yīng)用系統(tǒng)能夠識(shí)別已經(jīng)登錄過的用戶。應(yīng)用系統(tǒng)應(yīng)該能對(duì)ticket進(jìn)行識(shí)別和提取,通過與認(rèn)證系統(tǒng)的通訊,能自動(dòng)判斷當(dāng)前用戶是否登錄過,從而完成單點(diǎn)登錄的功能。
關(guān)于統(tǒng)一身份驗(yàn)證機(jī)制,如下圖:
①用戶請(qǐng)求訪問業(yè)務(wù)系統(tǒng)。
②業(yè)務(wù)系統(tǒng)在系統(tǒng)中查看是否有對(duì)應(yīng)請(qǐng)求的有效令牌,若有,則讀取對(duì)應(yīng)的身份信息,允許其訪問;若沒有或令牌無效,則把用戶重定向到統(tǒng)一身份認(rèn)證平臺(tái),并攜帶業(yè)務(wù)系統(tǒng)地址,進(jìn)入第③步。
③在統(tǒng)一身份認(rèn)證平臺(tái)提供的頁面中,用戶輸入身份憑證信息,平臺(tái)驗(yàn)證此身份憑證信息,若有效,則生成一個(gè)有效的令牌給用戶,進(jìn)入第④步;若無效,則繼續(xù)進(jìn)行認(rèn)證,直到認(rèn)證成功或退出為止。
④用戶攜帶第③步獲取的令牌,再次訪問業(yè)務(wù)系統(tǒng)。
⑤業(yè)務(wù)系統(tǒng)獲取用戶攜帶的令牌,提交到認(rèn)證平臺(tái)進(jìn)行有效性檢查和身份信息獲取。
⑥若令牌通過有效性檢查,則認(rèn)證平臺(tái)會(huì)把令牌對(duì)應(yīng)的用戶身份信息返回給業(yè)務(wù)系統(tǒng),業(yè)務(wù)系統(tǒng)把身份信息和有效令牌寫入會(huì)話狀態(tài)中,允許用戶以此身份信息進(jìn)行業(yè)務(wù)系統(tǒng)的各種操作;若令牌未通過有效性檢查,則會(huì)再次重定向到認(rèn)證平臺(tái),返回第③步。
通過統(tǒng)一身份認(rèn)證平臺(tái)獲取的有效令牌,可以在各個(gè)業(yè)務(wù)系統(tǒng)之間實(shí)現(xiàn)應(yīng)用漫游。
單點(diǎn)登錄的優(yōu)點(diǎn)
提高用戶效率
用戶不再被多次登錄困擾,也不需要記住ID和密碼。另外,用戶忘記密碼并求助于支持人員的情況也會(huì)減少。提高開發(fā)人員的效率
SSO 為開發(fā)人員提供了一個(gè)通用的身份驗(yàn)證框架。實(shí)際上,如果SSO機(jī)制是獨(dú)立的,那么開發(fā)人員就完全不需要為身份驗(yàn)證操心。他們可以假設(shè),只要對(duì)應(yīng)用程序的請(qǐng)求附帶一個(gè)用戶名,身份驗(yàn)證就已經(jīng)完成了。簡(jiǎn)化管理
如果應(yīng)用程序加入了單點(diǎn)登錄協(xié)議,管理用戶賬號(hào)的負(fù)擔(dān)就會(huì)減輕。簡(jiǎn)化的程度取決于應(yīng)用程序,因?yàn)镾SO只處理身份驗(yàn)證。所以,應(yīng)用程序可能仍然需要設(shè)置用戶的屬性(比如訪問特權(quán))。
單點(diǎn)登錄的缺點(diǎn)
不利于重構(gòu)
因?yàn)樯婕暗南到y(tǒng)很多,要重構(gòu)必須要兼容所有的系統(tǒng),可能很耗時(shí)無人看守桌面
因?yàn)橹恍枰卿浺淮危械氖跈?quán)的應(yīng)用系統(tǒng)都可以訪問,可能導(dǎo)致一些很重要的信息泄露。