王穎
(營口職業(yè)技術(shù)學(xué)院,遼寧 營口 115000)
單點(diǎn)登錄技術(shù)在J2EE企業(yè)web中的研究與應(yīng)用
王穎
(營口職業(yè)技術(shù)學(xué)院,遼寧 營口 115000)
介紹了基于ticket憑證策略和基于web請求代理策略的兩種單點(diǎn)登錄系統(tǒng)方案,并分析其優(yōu)缺點(diǎn);在實(shí)際項(xiàng)目中,結(jié)合兩種策略的優(yōu)缺點(diǎn),并使用web services技術(shù)構(gòu)造了一種應(yīng)用實(shí)際的單點(diǎn)登錄系統(tǒng)。
單點(diǎn)登錄系統(tǒng);ticket憑證;web請求代理;web services
0引言
企業(yè)在信息化進(jìn)程中,web應(yīng)用需求越來越大。企業(yè)往往是依據(jù)實(shí)際需要,構(gòu)建不同功能側(cè)重的信息系統(tǒng),如辦公自動化系統(tǒng)、郵件系統(tǒng)以及數(shù)據(jù)管理系統(tǒng)等等。而對于任一個(gè)web而言,首要的是實(shí)現(xiàn)用戶的身份認(rèn)證。傳統(tǒng)的架構(gòu)方法是這些系統(tǒng)都各自建立自己的實(shí)現(xiàn)用戶身份認(rèn)證的登錄系統(tǒng)。如此一來,在各個(gè)應(yīng)用的開發(fā)階段,需要為每一個(gè)系統(tǒng)設(shè)計(jì)開發(fā)登錄系統(tǒng),這勢必造成一定的人力和資源的浪費(fèi),影響開發(fā)進(jìn)度減低工作效率;而在用戶使用時(shí)則每轉(zhuǎn)換一次站點(diǎn)需要重新登錄,無論于管理者還是用戶都存在很大不方便。為了解決這些問題,單點(diǎn)登錄(Single Sign-On)系統(tǒng)就應(yīng)運(yùn)而生了。
單點(diǎn)登錄技術(shù)在Web應(yīng)用中的實(shí)現(xiàn)策略[1]常見的主要有兩種:一種是基于訪問票據(jù)(Access Ticket)的單點(diǎn)登錄解決方案,一種是基于Web請求代理[1]的單點(diǎn)登錄解決方案。下面就這兩種方案介紹和分析對比。
1.1 基于ticket憑證的策略
這種策略[3]的思想是在登錄服務(wù)器和應(yīng)用系統(tǒng)之間通過某種ticket建立起信任關(guān)系。這種基于憑證策略的主要目標(biāo)是通過對應(yīng)用系統(tǒng)進(jìn)行改造使其接受訪問憑證,對用戶的驗(yàn)證工作由SSO服務(wù)器來負(fù)責(zé),應(yīng)用系統(tǒng)的責(zé)任只是向登錄服務(wù)器驗(yàn)證訪問憑證的有效性和合法性?;趖icket憑證策略的單點(diǎn)登錄系統(tǒng)模型如圖1所示。
圖1 基于Ticket憑證策略的單點(diǎn)登錄系統(tǒng)模型
其工作原理及流程是:
1)首次登錄時(shí),用戶向登錄服務(wù)器提供用戶名和口令證明自己的身份;
2)登錄服務(wù)器驗(yàn)證用戶的合法性和有效性后,向用戶發(fā)放訪問憑證;
3)用戶訪問應(yīng)用系統(tǒng);
4)應(yīng)用系統(tǒng)向用戶索要訪問憑證;
5)應(yīng)用系統(tǒng)向登錄服務(wù)器驗(yàn)證訪問憑證的合法性和有效性;
6)如果用戶提供的訪問憑證有效合法,則應(yīng)用系統(tǒng)可以向用戶提供應(yīng)用服務(wù);否則應(yīng)用系統(tǒng)拒絕用戶的服務(wù)訪問請求。
這種方案的優(yōu)勢是很明顯的,它構(gòu)建了一個(gè)完整功能的單點(diǎn)登錄系統(tǒng),從訪問憑證的設(shè)計(jì),到用戶與登錄服務(wù)器的通信交互以及應(yīng)用系統(tǒng)與登錄服務(wù)器間的數(shù)據(jù)傳遞等,這些趨向于形成一個(gè)單點(diǎn)登錄的標(biāo)準(zhǔn),需要各個(gè)應(yīng)用系統(tǒng)去遵循。同時(shí)其缺陷也是顯而易見的,這不但需要構(gòu)建一個(gè)管理用戶的登錄服務(wù)器,還要對各個(gè)應(yīng)用系統(tǒng)原有的用戶管理和登錄系統(tǒng)進(jìn)行較大規(guī)模的改造,這種方案的代價(jià)勢必會很大。
1.2 基于Web請求代理的策略
這種策略[4]的思想是建立統(tǒng)一的代理服務(wù)器來接受所有的應(yīng)用站點(diǎn)的Web請求,由這個(gè)代理服務(wù)器來統(tǒng)一處理用戶的認(rèn)證和登錄。這里需要明確的是,盡管這個(gè)代理服務(wù)器統(tǒng)一代理所有的Web請求,但實(shí)際上其真正進(jìn)行處理的只是用戶認(rèn)證方面的相關(guān)請求,對于已認(rèn)證用戶的Web請求,僅僅是通過URL將請求轉(zhuǎn)發(fā)給應(yīng)用系統(tǒng)。所以代理服務(wù)器的主要功能是提供認(rèn)證服務(wù)。如此一來,這個(gè)代理服務(wù)器從真實(shí)功能上講也僅僅是一個(gè)登錄服務(wù)器?;谶@種策略,當(dāng)用戶訪問某應(yīng)用站點(diǎn)時(shí),Web請求將先發(fā)送給代理服務(wù)器,用戶完成認(rèn)證后再由代理服務(wù)器將請求轉(zhuǎn)發(fā)給應(yīng)用系統(tǒng),并將用戶的有效合法身份信息含在請求中一并轉(zhuǎn)發(fā)給應(yīng)用系統(tǒng)。Web請求代理部署模型如圖2所示。
圖2 基于Web請求代理的單點(diǎn)登錄系統(tǒng)模型
基于Web請求代理的單點(diǎn)登錄策略在實(shí)現(xiàn)認(rèn)證時(shí)也需要建立代理服務(wù)器與應(yīng)用系統(tǒng)間的信任關(guān)系,以便認(rèn)證后的用戶身份能夠被應(yīng)用系統(tǒng)承認(rèn)。在這點(diǎn)上與ticket思想是非常相似的,但其實(shí)現(xiàn)機(jī)制相對簡潔,結(jié)構(gòu)框架也更靈活一些,對原有Web應(yīng)用的改造較少,這就比較適合基于已有應(yīng)用系統(tǒng)的集成實(shí)現(xiàn)單點(diǎn)登錄。
以上對當(dāng)前基于Web的單點(diǎn)登錄的兩種策略進(jìn)行了分析,可以看出,兩種實(shí)現(xiàn)方案各有優(yōu)缺點(diǎn)。相比較之下,要在已有應(yīng)用的基礎(chǔ)上集成實(shí)現(xiàn)單點(diǎn)登錄,基于Web請求代理的方案相對存在一些優(yōu)勢?;谶@種策略,對原有應(yīng)用系統(tǒng)的改造代價(jià)較小,實(shí)現(xiàn)相對容易一些,目前較多數(shù)的單點(diǎn)登錄系統(tǒng)都傾向于采用這種方案來實(shí)現(xiàn)單點(diǎn)登錄。
在為某較大規(guī)模的通信公司設(shè)計(jì)和開發(fā)綜合信息系統(tǒng)時(shí),就面臨三個(gè)不同功能應(yīng)用系統(tǒng)的統(tǒng)一認(rèn)證和登錄問題。結(jié)合流行的單點(diǎn)登錄策略,我們設(shè)計(jì)了適應(yīng)于該綜合系統(tǒng)的單點(diǎn)登錄系統(tǒng)。
2.1 單點(diǎn)登錄系統(tǒng)總體設(shè)計(jì)
應(yīng)對該綜合信息系統(tǒng)對單點(diǎn)登錄的需求,我們首先分析該綜合系統(tǒng)的三大應(yīng)用系統(tǒng)的前期構(gòu)建情況:這三個(gè)應(yīng)用功能相對獨(dú)立,幾乎沒有相互依存度,并且各自存在獨(dú)立的身份認(rèn)證登錄系統(tǒng)。這樣的應(yīng)用背景要實(shí)現(xiàn)單點(diǎn)登錄,考慮工期等因素,我們首先考慮采用Web請求代理的策略,并考慮到Web應(yīng)用中session機(jī)制的方便性,考慮使用sessionid作為登錄認(rèn)證的憑證。這樣一來就結(jié)合了以上兩種策略的優(yōu)勢,構(gòu)建起便捷的單點(diǎn)登錄系統(tǒng)。具體單點(diǎn)登錄模型如圖3所示。
圖3 單點(diǎn)登錄系統(tǒng)模型
2.2 用戶綜合管理設(shè)計(jì)
從模型我們可以看出,中轉(zhuǎn)程序充當(dāng)了Web請求代理的角色,實(shí)現(xiàn)對用戶身份的認(rèn)證,實(shí)現(xiàn)登錄管理的功能。這個(gè)中轉(zhuǎn)程序也要對三個(gè)系統(tǒng)的用戶實(shí)施統(tǒng)一的管理,以便為統(tǒng)一的登錄認(rèn)證奠定基礎(chǔ)。由于這三個(gè)應(yīng)用系統(tǒng)都各自存在相對獨(dú)立并功能完備的用戶管理模塊,可以考慮采用web Serivces技術(shù)對三個(gè)應(yīng)用系統(tǒng)實(shí)施統(tǒng)一的用戶管理。
SOAP/Web Services技術(shù)的出現(xiàn)將Web應(yīng)用推向了一個(gè)新的階段,那就是以服務(wù)為導(dǎo)向的Web應(yīng)用。它允許各個(gè)不同的公司在Web站點(diǎn)上部署和自己公司的業(yè)務(wù)相關(guān)的應(yīng)用程序和系統(tǒng),通過一些標(biāo)準(zhǔn)的傳輸協(xié)議(如HTTP),和數(shù)據(jù)封裝的形式(如XML)進(jìn)行基于Internet分布式服務(wù)的傳遞和通訊,同時(shí)要求這些發(fā)布的應(yīng)用程序與企業(yè)內(nèi)部所使用的技術(shù)和系統(tǒng)無關(guān)。這樣它在技術(shù)上解決了不同操作系統(tǒng)、組件模型、開發(fā)工具和程序語言和應(yīng)用系統(tǒng)之間的集成問題。尤為重要的是能夠根據(jù)用戶需求提供快捷的服務(wù),克服了以前因Internet上信息過于泛濫、用戶獲取所需信息成本過高、效率過低的狀況。Web Services還有一個(gè)重要的特性是其所提供的服務(wù)不僅是面向人,還可以面向其它應(yīng)用系統(tǒng)?,F(xiàn)有的Web網(wǎng)站也可以認(rèn)為是面向服務(wù)的,但這種服務(wù)僅僅可以提供給人使用(只有人類才可以讀懂瀏覽器下載的頁面)。而新一代的Web Services[5]所提供的服務(wù)應(yīng)能被機(jī)器所讀懂,例如其它應(yīng)用程序及移動設(shè)備中的軟件系統(tǒng)。
本系統(tǒng)的用戶綜合管理中,在添加、修改以及刪除用戶以及用戶信息時(shí),使用Web Services技術(shù),在一個(gè)應(yīng)用系統(tǒng)變更用戶及信息時(shí),將這些信息同時(shí)同步到兩外兩個(gè)應(yīng)用系統(tǒng)的用戶管理數(shù)據(jù)表中,實(shí)現(xiàn)全系統(tǒng)的用戶信息的一致性。在這里使用的是org.appache.axis.client包中Call類和Service類,由Call類的Invoke ()方法實(shí)現(xiàn)遠(yuǎn)程方法調(diào)用,將用戶變更的信息同步到其他兩個(gè)應(yīng)用系統(tǒng)用戶表中。
2.3 單點(diǎn)登錄認(rèn)證設(shè)計(jì)
總體系統(tǒng)架構(gòu)由三部分來組成:源(目的)應(yīng)用程序(假設(shè)為Source)、中轉(zhuǎn)程序(假設(shè)為Forward)和目的(源)應(yīng)用程序(假設(shè)為Destination)。如上所描述兩端應(yīng)用程序互為源、目的應(yīng)用程序,兩者互訪問將通過“中轉(zhuǎn)程序”做轉(zhuǎn)發(fā)。體現(xiàn)在圖三模型圖中,就是:
(1)from應(yīng)用服務(wù)器1to應(yīng)用服務(wù)器2;(2)from應(yīng)用服務(wù)器2to應(yīng)用服務(wù)器1; (3)from應(yīng)用服務(wù)器1to應(yīng)用服務(wù)器3;(4)from應(yīng)用服務(wù)器3to應(yīng)用服務(wù)器1; (5)from應(yīng)用服務(wù)器2to應(yīng)用服務(wù)器3;(6)from應(yīng)用服務(wù)器3to應(yīng)用服務(wù)器2; (7)to應(yīng)用服務(wù)器1;(8)to應(yīng)用服務(wù)器2;(9)to應(yīng)用服務(wù)器3。
下面詳細(xì)描述Source(Forward(Destination跳轉(zhuǎn)流程的具體實(shí)現(xiàn)步驟和細(xì)節(jié):
1)Source用戶登陸,獲取$sessionid,通過session.setAttribute(‘sessionid’,$sessionid)來保存值,并且聯(lián)同loginname和$sessionid保存到登陸記錄表中;
2)Source訪問Forward,首先以session.getAttribute(‘sessionid’)的形式獲取$sessionid,如果獲取到的值為null表示未登陸或登陸超時(shí),直接轉(zhuǎn)發(fā)到Source的登陸頁面;反之則攜帶loginname和$sessionid到登陸記錄表中做簽權(quán)校驗(yàn);
3)若Source在Forward處簽權(quán)成功,表示已有用戶登陸,直接取出loginname和$sessionid以及其它相關(guān)信息轉(zhuǎn)發(fā)到Destination做相應(yīng)登陸等操作;否則,Source在Forward處簽權(quán)失敗,表示未登陸或登陸超時(shí),直接轉(zhuǎn)發(fā)到Destination的登陸頁面,提示登陸操作;
4)Destination接到Forward的相應(yīng)信息后,首先利用接收到的用戶相關(guān)信息做登陸操作、用戶信息入session等操作后,再將接收到的$sessionid以session.setAttribute(‘sessionid’,$sessionid)的形式保存在本地一份以便再次跳轉(zhuǎn);以上所述就完成了一次兩系統(tǒng)間的調(diào)整登陸操作,兩系統(tǒng)間互為源和目的地,所做操作均相同。
單點(diǎn)登錄系統(tǒng)為Web應(yīng)用的集成和使用提供了很大的便利,是解決多門戶問題的重要技術(shù)。單點(diǎn)登錄系統(tǒng)的認(rèn)證策略有很多種,其中基于Web請求代理策略和基于ticket憑證的策略是兩種較為理想、應(yīng)用也比較廣泛的實(shí)現(xiàn)方案。本文結(jié)合這兩種策略的優(yōu)點(diǎn),并使用Web Services技術(shù),給出了一個(gè)單點(diǎn)登錄系統(tǒng)的實(shí)際應(yīng)用,較好的實(shí)現(xiàn)了三個(gè)應(yīng)用系統(tǒng)的自由無阻漫游。但是這一應(yīng)用還屬于較低層次的應(yīng)用,為了提高系統(tǒng)的整體安全性和可靠性,單點(diǎn)登錄技術(shù)還應(yīng)結(jié)合包括PKI證書技術(shù)、XML標(biāo)準(zhǔn)以及Web Services安全規(guī)范標(biāo)準(zhǔn)等技術(shù)綜合實(shí)施,這將會是單點(diǎn)登錄系統(tǒng)未來研究與應(yīng)用的一個(gè)重要方向。
同時(shí),分析構(gòu)建的單點(diǎn)登錄系統(tǒng)模型能夠發(fā)現(xiàn):單點(diǎn)登錄系統(tǒng)存在一個(gè)很大的安全隱患,所有的訪問都必須經(jīng)過單點(diǎn)登錄服務(wù)器(中轉(zhuǎn)程序)進(jìn)行身份認(rèn)證然后轉(zhuǎn)發(fā),這使其成為全系統(tǒng)的重點(diǎn)部位,遭到致命攻擊,勢必造成系統(tǒng)整體癱瘓。因此加強(qiáng)單點(diǎn)登錄服務(wù)器的安全保護(hù),防范各種攻擊成為必須重點(diǎn)考慮的問題。另外大規(guī)模的訪問對單點(diǎn)登錄服務(wù)器的連接承載能力也是一個(gè)考驗(yàn),所以負(fù)載均衡的設(shè)計(jì)也必須在部署單點(diǎn)登錄系統(tǒng)時(shí)予以考慮。
[1] Gilmore B,F(xiàn)arvis K,Maddock J.Core Middleware and Shared Serv icesS tudies Single Sign-on Report[EB/OL].http://www.jisc.ac.uk/index.cfm?name=prog_middss_studies.2004-9.
[2] D unneC.Build and Implement a SingleSign-onSolution[EB/OL]http://www-106.ibm.comldeveloperworks/Web/librarylwa-singlesign/30,2001.
[3] 林滿山,郭荷清.單點(diǎn)登錄技術(shù)的現(xiàn)狀及發(fā)展[J].計(jì)算機(jī)應(yīng)用,2004,24(s1):99.
[4] 續(xù)巖,季永志.單點(diǎn)登錄技術(shù)在web應(yīng)用中的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2006(10):271-273.
[5] 李新力,梁立新.基于EJB 3.0和Web Services的Java應(yīng)用開發(fā)[M].北京:電子工業(yè)出版社,2008:68-90.
責(zé)任編輯:吳旭云
Research and application of the single sign-on technology in web of J2EE enterprises
WANG Ying
(Yingkou Vocational Technology College,Yingkou 115000,China)
Based on ticket certificate strategy and web request broker strategy,this paper introduces two single sign-on system projects and makes comments on the advantages and disadvantages.It sets up a practical single sign-on system by using the technology of web services combining with the advatages of the two strategies in the practical projects.
single sign-on system;ticket certificate;web request broker;web services
TP391.09
A
1009-3907(2010)08-0070-04
2010-05-31
王穎(1974-),女,遼寧營口人,講師,碩士,主要從事電子、計(jì)算機(jī)教學(xué)及研究工作。