SSO技術(shù)簡(jiǎn)介 SSO(Single Sign-On,單點(diǎn)登錄)是身份管理中的一部分。SSO的一種較為通俗的定義是:SSO是指訪問(wèn)同一服務(wù)器不同應(yīng)用中的受保護(hù)資源的同一用戶,只需要登錄一次,即通過(guò)一個(gè)應(yīng)用中的安全驗(yàn)證后,再訪問(wèn)其他應(yīng)用中的受保護(hù)資源時(shí),不再需要重新登錄驗(yàn)證。 SSO與身份管理軟件背景 目前的企業(yè)應(yīng)用環(huán)境中,往往有很多的應(yīng)用系統(tǒng),如辦公自動(dòng)化(OA)系統(tǒng),財(cái)務(wù)管理系統(tǒng),檔案管理系統(tǒng),信息查詢系統(tǒng)等等。這些應(yīng)用系統(tǒng)服務(wù)于企業(yè)的信息化建設(shè),為企業(yè)帶來(lái)了很好的效益。但是,用戶在使用這些應(yīng)用系統(tǒng)時(shí),并不方便。用戶每次使用系統(tǒng),都必須輸入用戶名稱和用戶密碼,進(jìn)行身份驗(yàn)證;而且,應(yīng)用系統(tǒng)不同,用戶賬號(hào)就不同,用戶必須同時(shí)牢記多套用戶名稱和用戶密碼。特別是對(duì)于應(yīng)用系統(tǒng)數(shù)目較多,用戶數(shù)目也很多的企業(yè),這個(gè)問(wèn)題尤為突出。問(wèn)題的原因并不是系統(tǒng)開(kāi)發(fā)出現(xiàn)失誤,而是缺少整體規(guī)劃,缺乏統(tǒng)一的用戶登錄平臺(tái)。 使用SSO的好處 使用SSO的好處主要有: (1)方便用戶 用戶使用應(yīng)用系統(tǒng)時(shí),能夠一次登錄,多次使用。用戶不再需要每次輸入用戶名稱和用戶密碼,也不需要牢記多套用戶名稱和用戶密碼。單點(diǎn)登錄平臺(tái)能夠改善用戶使用應(yīng)用系統(tǒng)的體驗(yàn)。 (2)方便管理員 系統(tǒng)管理員只需要維護(hù)一套統(tǒng)一的用戶賬號(hào),方便、簡(jiǎn)單。相比之下,系統(tǒng)管理員以前需要管理很多套的用戶賬號(hào)。每一個(gè)應(yīng)用系統(tǒng)就有一套用戶賬號(hào),不僅給管理上帶來(lái)不方便,而且,也容易出現(xiàn)管理漏洞。 (3)簡(jiǎn)化應(yīng)用系統(tǒng)開(kāi)發(fā) 開(kāi)發(fā)新的應(yīng)用系統(tǒng)時(shí),可以直接使用單點(diǎn)登錄平臺(tái)的用戶認(rèn)證服務(wù),簡(jiǎn)化開(kāi)發(fā)流程。單點(diǎn)登錄平臺(tái)通過(guò)提供統(tǒng)一的認(rèn)證平臺(tái),實(shí)現(xiàn)單點(diǎn)登錄。因此,應(yīng)用系統(tǒng)并不需要開(kāi)發(fā)用戶認(rèn)證程序。 實(shí)現(xiàn)SSO的技術(shù)主要有: (1)基于cookies實(shí)現(xiàn),需要注意如下幾點(diǎn):如果是基于兩個(gè)域名之間傳遞sessionid的方法可能在windows中成立,在unix&linux中可能會(huì)出現(xiàn)問(wèn)題;可以基于數(shù)據(jù)庫(kù)實(shí)現(xiàn);在安全性方面可能會(huì)作更多的考慮。另外,關(guān)于跨域問(wèn)題,雖然cookies本身不跨域,但可以利用它實(shí)現(xiàn)跨域的SSO。 (2)Broker-based(基于經(jīng)紀(jì)人),例如Kerberos等; 這種技術(shù)的特點(diǎn)就是,有一個(gè)集中的認(rèn)證和用戶賬號(hào)管理的服務(wù)器。經(jīng)紀(jì)人給被用于進(jìn)一步請(qǐng)求的電子的身份存取。中央數(shù)據(jù)庫(kù)的使用減少了管理的代價(jià),并為認(rèn)證提供一個(gè)公共和獨(dú)立的"第三方"。例如Kerberos、Sesame、IBM KryptoKnight(憑證庫(kù)思想)等。 (3)Agent-based(基于代理人) 在這種解決方案中,有一個(gè)自動(dòng)地為不同的應(yīng)用程序認(rèn)證用戶身份的代理程序。這個(gè)代理程序需要設(shè)計(jì)有不同的功能。比如, 它可以使用口令表或加密密鑰來(lái)自動(dòng)地將認(rèn)證的負(fù)擔(dān)從用戶移開(kāi)。代理人被放在服務(wù)器上面,在服務(wù)器的認(rèn)證系統(tǒng)和客戶端認(rèn)證方法之間充當(dāng)一個(gè)"翻譯"。例如SSH等。 (4)Token-based,例如SecurID、WebID、 現(xiàn)在被廣泛使用的口令認(rèn)證,比如FTP,郵件服務(wù)器的登錄認(rèn)證,這是一種簡(jiǎn)單易用的方式,實(shí)現(xiàn)一個(gè)口令在多種應(yīng)用當(dāng)中使用。 (5)基于網(wǎng)關(guān) Agent and Broker-based,這里不作介紹。 (6)基于安全斷言標(biāo)記語(yǔ)言(SAML)實(shí)現(xiàn),SAML(Security Assertion Markup Language,安全斷言標(biāo)記語(yǔ)言)的出現(xiàn)大大簡(jiǎn)化了SSO,并被OASIS批準(zhǔn)為SSO的執(zhí)行標(biāo)準(zhǔn)。開(kāi)源組織OpenSAML 實(shí)現(xiàn)了 SAML 規(guī)范,可參考http://www.
SUN SSO技術(shù) SUN SSO實(shí)現(xiàn)原理 SSO的核心在于統(tǒng)一用戶認(rèn)證,登錄、認(rèn)證請(qǐng)求通過(guò)IDENTITY SERVER服務(wù)器完成,然后分發(fā)到相應(yīng)應(yīng)用。 SUN SSO是java Access Manager的一個(gè)組成部分,SSO基于Cookie實(shí)現(xiàn)解釋如下: (1)Policy Agent on Web or Application Server intercepts resource requests and enforces access control; (2)Client is issued SSO token containing information for session Validation with Session service. (3)SSO token has no content- just a long random string used as a handle. (4)Web-based applications use browser session cookies or URL rewriting to issue SSO token. (5)Non Web applications use the SSO API(Java/c) to obtain the SSO token to validate the users identity. SUN SSO 的應(yīng)用 這里說(shuō)的應(yīng)用是指Sun Java System Access Manager的應(yīng)用。成功應(yīng)用例子很多,包括德國(guó)電信等公司的應(yīng)用,國(guó)內(nèi)也有大量高校在使用,也有相當(dāng)多的其它行業(yè)的應(yīng)用。 SUN SSO的開(kāi)源 OpenSSO 計(jì)劃的第一部份源代碼,將于今年年底完成,基本的版本將于明年3月份發(fā)布,而完整的版本可能要等到明年五月份。Sun 采用與Solaris 操作系統(tǒng)相同的共同開(kāi)發(fā)暨流通授權(quán)(Common Development and Distribution License)方式。
CAS背景介紹 CAS(Central Authentication Service),是耶魯大學(xué)開(kāi)發(fā)的單點(diǎn)登錄系統(tǒng)(SSO,single sign-on),應(yīng)用廣泛,具有獨(dú)立于平臺(tái)的,易于理解,支持代理功能。CAS系統(tǒng)在各個(gè)大學(xué)如耶魯大學(xué)、加州大學(xué)、劍橋大學(xué)、香港科技大學(xué)等得到應(yīng)用。 Spring Framework的Acegi安全系統(tǒng)支持CAS,并提供了易于使用的方案。Acegi安全系統(tǒng),是一個(gè)用于Spring Framework的安全框架,能夠和目前流行的Web容器無(wú)縫集成。它使用了Spring的方式提供了安全和認(rèn)證安全服務(wù),包括使用Bean Context,攔截器和面向接口的編程方式。因此,Acegi安全系統(tǒng)能夠輕松地適用于復(fù)雜的安全需求。Acegi安全系統(tǒng)在國(guó)內(nèi)外得到了廣泛的應(yīng)用,有著良好的社區(qū)環(huán)境。 CAS的設(shè)計(jì)目標(biāo) (1)為多個(gè)Web應(yīng)用提供單點(diǎn)登錄基礎(chǔ)設(shè)施,同時(shí)可以為非Web應(yīng)用但擁有Web前端的功能服務(wù)提供單點(diǎn)登錄的功能; (2)簡(jiǎn)化應(yīng)用認(rèn)證用戶身份的流程; (3)將用戶身份認(rèn)證集中于單一的Web應(yīng)用,讓用戶簡(jiǎn)化他們的密碼管理,從而提高安全性;而且,當(dāng)應(yīng)用需要修改身份驗(yàn)證的業(yè)務(wù)邏輯時(shí),不需要到處修改代碼。 CAS的實(shí)現(xiàn)原理 CAS(Central Authentication Server)被設(shè)計(jì)成一個(gè)獨(dú)立的Web應(yīng)用。實(shí)現(xiàn)原理非常簡(jiǎn)單,CAS Server CAS在應(yīng)用中的運(yùn)行硬件環(huán)境 CAS創(chuàng)建一個(gè)位數(shù)很長(zhǎng)的隨機(jī)數(shù)(ticket)。CAS把這個(gè)ticket和成功登錄的用戶以及用戶要訪問(wèn)的service聯(lián)系起來(lái)。例如,如果用戶peon重定向自service S,CAS創(chuàng)建ticket T,這個(gè)ticket T允許peon訪問(wèn)service S。這個(gè)ticket是個(gè)一次性的憑證;它僅僅用于peon和僅僅用于service S,并且只能使用一次,使用之后馬上會(huì)過(guò)期,即ticket通過(guò)驗(yàn)證,CAS立即刪除該ticket,使它以后不能再使用。這樣可以保證其安全性。 關(guān)于ST,在取一個(gè)ST時(shí),即使用deleteTicket(ticketId)同時(shí)將一次性的ST刪除;而對(duì)于TGT或PT,則通過(guò)resetTimer(ticketId)以更新TGT或PT的時(shí)間。在CAS服務(wù)端返回的ST中只能得出用戶名。 |
|