來(lái)源: cnblogs
廣告:
SSO,單一登錄(single sign-on),意思是指在多套系統(tǒng)并存的環(huán)境下,用戶只需登錄一次即可訪問其他授權(quán)的系統(tǒng)。
提起SSO(單一登錄),大概企業(yè)里的IT人員無(wú)人不知,但真正意識(shí)到其復(fù)雜度的,未必有多少,只有親身實(shí)施過(guò)的技術(shù)人員,也許才明白個(gè)中玄妙。本文基于藍(lán)凌為國(guó)內(nèi)幾十家大中型企業(yè)的服務(wù)案例,針對(duì)SSO的相關(guān)技術(shù)和案例進(jìn)行一些探討,希望能幫助到企業(yè)IT人員更深刻理解SSO技術(shù)及其應(yīng)用。
一、企業(yè)級(jí)SSO
SSO涉及的領(lǐng)域大致上可以分為三種:社會(huì)性網(wǎng)站間的SSO、部門SSO、企業(yè)級(jí)SSO。
社會(huì)性網(wǎng)站間的SSO主要涉及的帳號(hào)信息開放性問題,能否實(shí)施成功主要取決于各大網(wǎng)站帳號(hào)管理是否遵循相同的標(biāo)準(zhǔn)協(xié)議,如Openid、Passport等。
部門級(jí)SSO比較簡(jiǎn)單,一般涉及的系統(tǒng)不多,由技術(shù)人員通過(guò)編程方式實(shí)現(xiàn)即可,但一旦牽涉系統(tǒng)眾多,安全性要求高的情況,就不適用了。
企業(yè)級(jí)SSO是三者中最復(fù)雜的領(lǐng)域,因涉及的系統(tǒng)可能五花八門,這些系統(tǒng)也許是老舊的C/S結(jié)構(gòu)系統(tǒng)、可能是某種大型軟件系統(tǒng)(如SAP),還可能是某種非web登錄方式(如windows域登錄);其安全性要求也遠(yuǎn)比前兩者高,如要求同享登錄有效時(shí)間等,因此企業(yè)級(jí)SSO在技術(shù)難度上是最高的,但也因此是IT人員最愿意鉆研的領(lǐng)域。而絕大部分國(guó)內(nèi)企業(yè),其內(nèi)部系統(tǒng)常常因?yàn)闅v史原因?qū)е露嗵紫到y(tǒng)缺乏統(tǒng)一規(guī)劃,缺乏標(biāo)準(zhǔn)而導(dǎo)致整合代價(jià)高昂。因此SSO也是許多大中型企業(yè)IT部門比較頭疼的事情。
本文主要討論的領(lǐng)域,就是企業(yè)級(jí)SSO。
二、深入企業(yè)級(jí)SSO
SSO是一把雙刃劍:SSO可以簡(jiǎn)化用戶登錄過(guò)程,提升用戶的登錄體驗(yàn);同時(shí)可以降低IT管理員大量賬戶和密碼維護(hù)成本;SSO還提供了符合薩班斯法案的密碼集中管理工具;但SSO同時(shí)也產(chǎn)生了一種安全風(fēng)險(xiǎn),某一系統(tǒng)用戶身份一旦被攻破,則意味著所有參與SSO網(wǎng)絡(luò)的應(yīng)用系統(tǒng)也被穿透。因此需要慎重考慮SSO的范圍及安全級(jí)別的局限性。
SSO涉及不同層面的需求:SSO的實(shí)質(zhì)是多套系統(tǒng)能否識(shí)別同一用戶的身份,并在各套系統(tǒng)間實(shí)時(shí)同步用戶身份信息,以支持各套系統(tǒng)進(jìn)行用戶權(quán)限控制。基于這樣的原因,一套SSO技術(shù)至少應(yīng)該考慮一下四個(gè)層面的需求:
1、 單點(diǎn)登錄,多點(diǎn)即可同時(shí)登錄;
2、 單點(diǎn)注銷(退出登錄),多點(diǎn)即可同時(shí)注銷;
3、 單點(diǎn)切換用戶,多點(diǎn)即可同時(shí)切換;
4、 單點(diǎn)登錄過(guò)期,多點(diǎn)同時(shí)過(guò)期。
如下圖:
現(xiàn)實(shí)環(huán)境中,一個(gè)最佳的SSO環(huán)境(整合代價(jià)最小)應(yīng)該是:
1、一個(gè)用戶在不同系統(tǒng)只有一個(gè)共同登錄名和密碼
2、各套應(yīng)用系統(tǒng)共享一套用戶名和密碼信息
3、應(yīng)用系統(tǒng)采用相同的技術(shù)架構(gòu)且域名后綴相同
而一個(gè)最壞的SSO環(huán)境(整合代價(jià)最大)會(huì)體現(xiàn)為:
1、一個(gè)用戶在不同系統(tǒng)有不同的登錄名和密碼
2、不同的應(yīng)用系統(tǒng)各自存儲(chǔ)了獨(dú)立的用戶名和密碼
3、 應(yīng)用系統(tǒng)采用不同的技術(shù)架構(gòu)且域名后綴不同,甚至只有IP而無(wú)域名。
從我們的實(shí)操經(jīng)驗(yàn)來(lái)看,能夠提供最佳SSO環(huán)境的企業(yè),在國(guó)內(nèi)幾乎鳳毛麟角,這樣的企業(yè)必須是非常具有IT戰(zhàn)略眼光且IT系統(tǒng)選型非常精準(zhǔn),企業(yè)歷任IT領(lǐng)導(dǎo)間保持了高度的傳承共識(shí)、IT規(guī)劃細(xì)致到位才可能做到;而最壞或接近最壞的SSO環(huán)境卻比比皆是。
幸運(yùn)的是,即便是最壞的SSO環(huán)境,也還是有相應(yīng)的技術(shù)解決方案來(lái)支持整合的。
三、SSO的兩種架構(gòu)與三種實(shí)現(xiàn)技術(shù)
從應(yīng)用架構(gòu)層面,SSO主要可以分為集中驗(yàn)證模式和多點(diǎn)驗(yàn)證模式兩種不同的架構(gòu)。
相對(duì)與多點(diǎn)驗(yàn)證模式來(lái)說(shuō),集中驗(yàn)證模式的適用范圍更廣,而且在SSO服務(wù)器中使用的是統(tǒng)一的用戶名密碼,用戶無(wú)需關(guān)注登錄的是哪套系統(tǒng)的賬套,所以用戶體驗(yàn)更加優(yōu)秀。由于所有的登錄都放在了統(tǒng)一的服務(wù)器,所以當(dāng)集中驗(yàn)證服務(wù)器宕機(jī)時(shí),所有系統(tǒng)無(wú)法正常登錄,或丟失SSO的功能,建議以獨(dú)立服務(wù)器作為集中驗(yàn)證服務(wù)器,并需要保證登錄服務(wù)器的穩(wěn)定性。
在多點(diǎn)驗(yàn)證模式的模式下,所有的登錄操作都在應(yīng)用系統(tǒng)完成,任何一套系統(tǒng)宕機(jī)不會(huì)對(duì)其它系統(tǒng)產(chǎn)生影響,也不會(huì)影響正常運(yùn)行系統(tǒng)間的SSO。但若各套系統(tǒng)的賬套不一樣的時(shí)候,若要用戶區(qū)分每套系統(tǒng)的用戶密碼,必定會(huì)降低用戶的體驗(yàn),為了解決該問題,多點(diǎn)登錄模式最好有統(tǒng)一的用戶密碼驗(yàn)證的服務(wù)(如LDAP身份驗(yàn)證)。另外,多點(diǎn)登錄模式相對(duì)集中驗(yàn)證模式來(lái)說(shuō)會(huì)存在更多的技術(shù)限制,詳見后面的章節(jié)。
從SSO在技術(shù)實(shí)現(xiàn)的角度,SSO的實(shí)現(xiàn)通常有以下三種技術(shù)實(shí)現(xiàn)途徑:代理登錄(agent)、令牌環(huán)(token)、身份票據(jù)(ticket)。
代理登錄的優(yōu)點(diǎn)就是無(wú)需對(duì)原有系統(tǒng)做任何改造,適用于無(wú)法改造的舊系統(tǒng);
其缺點(diǎn)很明顯:
1、穩(wěn)定性差,一旦登錄期間某臺(tái)服務(wù)器無(wú)法響應(yīng),則該服務(wù)器無(wú)法單點(diǎn)登錄。
2、安全性差,用戶名密碼通過(guò)明文傳輸。
3、由于登錄期間需要監(jiān)控各個(gè)系統(tǒng)的響應(yīng),所以不建議大量使用,否則會(huì)影響登錄的性能。
4、由于IE的安全限制,代理登錄必須在同域的情況下運(yùn)行。
令牌環(huán)的方式最大好處在于無(wú)需統(tǒng)一的驗(yàn)證服務(wù)器,是“多點(diǎn)驗(yàn)證模式”的主力實(shí)現(xiàn)技術(shù),各個(gè)服務(wù)器都通過(guò)統(tǒng)一的密鑰對(duì)令牌進(jìn)行加密解密,所以該方式具有安全性高、穩(wěn)定性好、性能消耗低等優(yōu)點(diǎn);其缺點(diǎn)就是必須保證各臺(tái)應(yīng)用服務(wù)器同域。
身份票據(jù)的方式,是適用范圍最廣的一種SSO實(shí)現(xiàn)方式,可以解決跨域等問題,安全性高、穩(wěn)定性好;其缺點(diǎn)就是必須增加一臺(tái)驗(yàn)證服務(wù)器,保證在高壓下驗(yàn)證服務(wù)器的穩(wěn)定運(yùn)行,性能方面由于每次登錄都需要訪問驗(yàn)證服務(wù)器,所以比令牌環(huán)的方式略差一點(diǎn)。
三種技術(shù)實(shí)現(xiàn)途徑的比較
比較項(xiàng) |
代理登錄 |
令牌環(huán) |
身份票據(jù) |
需求實(shí)現(xiàn)程度 |
無(wú)法實(shí)現(xiàn)同時(shí)切換用戶與會(huì)話同時(shí)過(guò)期 |
全部 |
全部 |
對(duì)原系統(tǒng)改造 |
無(wú) |
小量改造 |
小量改造 |
安全性 |
低 |
高 |
高 |
穩(wěn)定性 |
偏低 |
好 |
好 |
性能開銷 |
登錄瞬間壓力大一點(diǎn) |
非常小 |
較小 |
適用范圍 |
同域,對(duì)用戶密碼不一致的系統(tǒng),需在登錄服務(wù)器的用戶憑證庫(kù)保存用戶密碼映射 |
同域,對(duì)不同登錄名需增加對(duì)用戶憑證庫(kù)的訪問 |
所有可改造的系統(tǒng),對(duì)不同登錄名需在登錄服務(wù)器的用戶憑證庫(kù)保存用戶映射 |
獨(dú)立驗(yàn)證服務(wù)器 |
需要 |
不需要 |
需要 |
登錄模式支持 |
集中驗(yàn)證模式 |
集中驗(yàn)證模式/多點(diǎn)驗(yàn)證模式 |
集中驗(yàn)證模式 |
四、 藍(lán)凌EKP 產(chǎn)品SSO解決方案
從藍(lán)凌實(shí)施過(guò)的數(shù)十個(gè)SSO整合案例得到的經(jīng)驗(yàn)來(lái)看,單一的SSO技術(shù)和架構(gòu)不可能徹底解決所有SSO問題,藍(lán)凌EKP產(chǎn)品提供的SSO解決方案中,提供了混合實(shí)現(xiàn)途徑,可以根據(jù)客戶的實(shí)際情況進(jìn)行靈活地組合,并提供足夠的擴(kuò)展接口。EKP SSO組件包含一個(gè)服務(wù)器和多個(gè)內(nèi)置客戶端產(chǎn)品包:
EKP SSO Server:基于CAS內(nèi)核,并在上面增加了許多擴(kuò)展,具有簡(jiǎn)單易用(通過(guò)配置完成大部分SSO需求)、擴(kuò)展性強(qiáng)、應(yīng)用范圍廣、安全、穩(wěn)定等特點(diǎn)。
1、支持多種賬戶存儲(chǔ)方式
2、支持一個(gè)用戶多套帳號(hào)密碼
3、支持前述三種主要身份認(rèn)證技術(shù)
4、支持靈活擴(kuò)展
EKP SSO Client:客戶端組件是為了減少各應(yīng)用系統(tǒng)的改造工作量設(shè)計(jì)的,針對(duì)不同的開發(fā)語(yǔ)言有不同客戶端提供調(diào)用。
EKP的系列產(chǎn)品(EKP-D、EKP-N、EKP-J、EKP-Portal)已經(jīng)內(nèi)置了EKP SSO Client
客戶端的支持:
在本SSO方案中,整合了IBM Websphere Portal、藍(lán)凌Domino和Java系列的產(chǎn)品、Coremail以及內(nèi)部的所有應(yīng)用系統(tǒng)的SSO。采用了IBM的TDS作為目錄服務(wù),進(jìn)行用戶名密碼的驗(yàn)證;使用了藍(lán)凌的UIM系統(tǒng),對(duì)用戶進(jìn)行維護(hù),映射各套應(yīng)用系統(tǒng)之間的用戶憑證;通過(guò)藍(lán)凌的SSO服務(wù)器,簡(jiǎn)化了所有系統(tǒng)的登錄驗(yàn)證操作;大部分的客戶端與SSO服務(wù)器之間采用了性能消耗最小的令牌環(huán)技術(shù)進(jìn)行用戶身份的傳遞。
六、建議
好的SSO規(guī)劃可以幫助企業(yè)以最小的整合代價(jià)、最佳的維護(hù)成本獲得最優(yōu)的用戶登錄體驗(yàn)。
在藍(lán)凌所實(shí)施的項(xiàng)目中,規(guī)劃和整合通常都是一體實(shí)施的。即通過(guò)幫助客戶進(jìn)行典型系統(tǒng)的SSO整合,同時(shí)基于企業(yè)特點(diǎn)幫助客戶制訂一套可適應(yīng)未來(lái)的SSO規(guī)范,這樣的動(dòng)作,通常會(huì)包括在企業(yè)門戶整合項(xiàng)目或IT規(guī)劃項(xiàng)目中,作為一個(gè)關(guān)鍵組成部分進(jìn)行實(shí)施。
我們期待有更多的企業(yè)提早認(rèn)識(shí)到企業(yè)SSO規(guī)劃的重要性
廣告: