目前的企業(yè)應(yīng)用環(huán)境中,往往有很多的應(yīng)用系統(tǒng),如辦公自動化(OA)系統(tǒng),財(cái)務(wù)管理系統(tǒng),檔案管理系統(tǒng),信息查詢系統(tǒng)等等。這些應(yīng)用系統(tǒng)服務(wù)于企業(yè)的信息化建設(shè),為企業(yè)帶來了很好的效益。但是,用戶在使用這些應(yīng)用系統(tǒng)時(shí),并不方便。用戶每次使用系統(tǒng),都必須輸入用戶名稱和用戶密碼,進(jìn)行身份驗(yàn)證;而且,應(yīng)用系統(tǒng)不同,用戶賬號就不同,用戶必須同時(shí)牢記多套用戶名稱和用戶密碼。特別是對于應(yīng)用系統(tǒng)數(shù)目較多,用戶數(shù)目也很多的企業(yè),這個(gè)問題尤為突出。問題的原因并不是系統(tǒng)開發(fā)出現(xiàn)失誤,而是缺少整體規(guī)劃,缺乏統(tǒng)一的用戶登錄平臺。
使用SSO技術(shù)可以解決以上這些問題,SSO是身份管理中的一部分,關(guān)于安全與身份管理軟件市場,可參考:http://www.blogjava.net/ablix/archive/2005/12/28/25804.html
使用SSO的好處
使用SSO的好處主要有:
(1)方便用戶
用戶使用應(yīng)用系統(tǒng)時(shí),能夠一次登錄,多次使用。用戶不再需要每次輸入用戶名稱和用戶密碼,也不需要牢記多套用戶名稱和用戶密碼。單點(diǎn)登錄平臺能夠改善用戶使用應(yīng)用系統(tǒng)的體驗(yàn)。
(2)方便管理員
系統(tǒng)管理員只需要維護(hù)一套統(tǒng)一的用戶賬號,方便、簡單。相比之下,系統(tǒng)管理員以前需要管理很多套的用戶賬號。每一個(gè)應(yīng)用系統(tǒng)就有一套用戶賬號,不僅給管理上帶來不方便,而且,也容易出現(xiàn)管理漏洞。
(3)簡化應(yīng)用系統(tǒng)開發(fā)
開發(fā)新的應(yīng)用系統(tǒng)時(shí),可以直接使用單點(diǎn)登錄平臺的用戶認(rèn)證服務(wù),簡化開發(fā)流程。單點(diǎn)登錄平臺通過提供統(tǒng)一的認(rèn)證平臺,實(shí)現(xiàn)單點(diǎn)登錄。因此,應(yīng)用系統(tǒng)并不需要開發(fā)用戶認(rèn)證程序。
SSO實(shí)現(xiàn)技術(shù)
實(shí)現(xiàn)SSO的技術(shù)主要有:
(1)基于cookies實(shí)現(xiàn),需要注意如下幾點(diǎn):如果是基于兩個(gè)域名之間傳遞sessionid的方法可能在windows中成立,在unix&linux中可能會出現(xiàn)問題;可以基于數(shù)據(jù)庫實(shí)現(xiàn);在安全性方面可能會作更多的考慮。另外,關(guān)于跨域問題,雖然cookies本身不跨域,但可以利用它實(shí)現(xiàn)跨域的SSO。
(2)Broker-based(基于經(jīng)紀(jì)人),例如Kerberos等;
這種技術(shù)的特點(diǎn)就是,有一個(gè)集中的認(rèn)證和用戶賬號管理的服務(wù)器。經(jīng)紀(jì)人給被用于進(jìn)一步請求的電子的身份存取。中央數(shù)據(jù)庫的使用減少了管理的代價(jià),并為認(rèn)證提供一個(gè)公共和獨(dú)立的"第三方"。例如Kerberos、Sesame、IBM KryptoKnight(憑證庫思想)等。
(3)Agent-based(基于代理人)
在這種解決方案中,有一個(gè)自動地為不同的應(yīng)用程序認(rèn)證用戶身份的代理程序。這個(gè)代理程序需要設(shè)計(jì)有不同的功能。比如, 它可以使用口令表或加密密鑰來自動地將認(rèn)證的負(fù)擔(dān)從用戶移開。代理人被放在服務(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)證,這是一種簡單易用的方式,實(shí)現(xiàn)一個(gè)口令在多種應(yīng)用當(dāng)中使用。
(5)基于網(wǎng)關(guān)
Agent and Broker-based,這里不作介紹。
(6)基于安全斷言標(biāo)記語言(SAML)實(shí)現(xiàn),SAML(Security Assertion Markup Language,安全斷言標(biāo)記語言)的出現(xiàn)大大簡化了SSO,并被OASIS批準(zhǔn)為SSO的執(zhí)行標(biāo)準(zhǔn)。開源組織OpenSAML 實(shí)現(xiàn)了 SAML 規(guī)范,可參考http://www.opensaml.org
SUN SSO技術(shù)
SUN SSO技術(shù)是Sun Java System Access Manager產(chǎn)品中的一個(gè)組成部分。
Sun 的新身份管理產(chǎn)品包括Sun Java System Identity Manager、Sun Java System Directory Server Enterprise Edition 和 Sun Java System Access Manager,以上三者為Sun Java Identity Management Suite (身份識別管理套件)的組成部分,它們與Sun Java Application Platform Suite、Sun Java Availability Suite、Sun Java Communications Suite、Sun Java Web Infrastructure Suite組成Java ES。具有革新意義的這一系列產(chǎn)品提供端到端身份管理,同時(shí)可與 60 多種第三方資源和技術(shù)實(shí)現(xiàn)互操作,集成產(chǎn)品可以從SUN公司網(wǎng)站下載,一般以Agent軟件方式提供,是業(yè)內(nèi)集成程序最高、最為開放的身份管理解決方案之一。
在Sun 的新身份管理產(chǎn)品中,Sun Java System Access Manager是基中的一個(gè)重要組成部分,Java Access Manager基于J2EE架構(gòu),采用標(biāo)準(zhǔn)的API,可擴(kuò)展性強(qiáng),具有高可靠性和高可用性,應(yīng)用是部署在Servlets容器中的,支持分布式,容易部署且有較低的TCO。通過使用集中驗(yàn)證點(diǎn)、其于角色的訪問控制以及 SSO,Sun Java System Access Manager 為所有基于 Web 的應(yīng)用程序提供了一個(gè)可伸縮的安全模型。它簡化了信息交換和交易,同時(shí)能保護(hù)隱私及重要身份信息的安全。
SUN SSO實(shí)現(xiàn)原理
SSO的核心在于統(tǒng)一用戶認(rèn)證,登錄、認(rèn)證請求通過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)用
這里說的應(yīng)用是指Sun Java System Access Manager的應(yīng)用。成功應(yīng)用例子很多,包括德國電信等公司的應(yīng)用,國內(nèi)也有大量高校在使用,也有相當(dāng)多的其它行業(yè)的應(yīng)用。
SUN SSO的開源
Sun 將發(fā)布其網(wǎng)絡(luò)驗(yàn)證與網(wǎng)絡(luò)單點(diǎn)登錄技術(shù),給一項(xiàng)新的開放源代碼計(jì)劃“Open Web Single Sign-On”(Open SSO)。OpenSSO網(wǎng)站位于:https://opensso.dev.java.net/。該網(wǎng)站對OpenSSO的概述為:This project is based on the code base of Sun Java(tm) System Access Manager Product, a core identity infrastructure product offered by Sun Microsystems.
OpenSSO 計(jì)劃的第一部份源代碼,將于今年年底完成,基本的版本將于明年3月份發(fā)布,而完整的版本可能要等到明年五月份。Sun 采用與Solaris 操作系統(tǒng)相同的共同開發(fā)暨流通授權(quán)(Common Development and Distribution License)方式。
CAS背景介紹
CAS(Central Authentication Service),是耶魯大學(xué)開發(fā)的單點(diǎn)登錄系統(tǒng)(SSO,single sign-on),應(yīng)用廣泛,具有獨(dú)立于平臺的,易于理解,支持代理功能。CAS系統(tǒng)在各個(gè)大學(xué)如耶魯大學(xué)、加州大學(xué)、劍橋大學(xué)、香港科技大學(xué)等得到應(yīng)用。
Spring Framework的Acegi安全系統(tǒng)支持CAS,并提供了易于使用的方案。Acegi安全系統(tǒng),是一個(gè)用于Spring Framework的安全框架,能夠和目前流行的Web容器無縫集成。它使用了Spring的方式提供了安全和認(rèn)證安全服務(wù),包括使用Bean Context,攔截器和面向接口的編程方式。因此,Acegi安全系統(tǒng)能夠輕松地適用于復(fù)雜的安全需求。Acegi安全系統(tǒng)在國內(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)簡化應(yīng)用認(rèn)證用戶身份的流程;
(3)將用戶身份認(rèn)證集中于單一的Web應(yīng)用,讓用戶簡化他們的密碼管理,從而提高安全性;而且,當(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)原理非常簡單,CAS Server
通過CAS
CAS在應(yīng)用中的運(yùn)行硬件環(huán)境
University of
University of
CAS2.0.12中關(guān)于ticket的生成
CAS創(chuàng)建一個(gè)位數(shù)很長的隨機(jī)數(shù)(ticket)。CAS把這個(gè)ticket和成功登錄的用戶以及用戶要訪問的service聯(lián)系起來。例如,如果用戶peon重定向自service S,CAS創(chuàng)建ticket T,這個(gè)ticket T允許peon訪問service S。這個(gè)ticket是個(gè)一次性的憑證;它僅僅用于peon和僅僅用于service S,并且只能使用一次,使用之后馬上會過期,即ticket通過驗(yàn)證,CAS立即刪除該ticket,使它以后不能再使用。這樣可以保證其安全性。
關(guān)于ST,在取一個(gè)ST時(shí),即使用deleteTicket(ticketId)同時(shí)將一次性的ST刪除;而對于TGT或PT,則通過resetTimer(ticketId)以更新TGT或PT的時(shí)間。在CAS服務(wù)端返回的ST中只能得出用戶名。
另外,CAS3.0版本也已經(jīng)發(fā)布了,現(xiàn)在最新的版本是3.03,希望CAS3.0在向下兼容的同時(shí),更能向我們提供一些新東西。