魏達(dá)賢 季士妍 范書(shū)云
(國(guó)家圖書(shū)館,北京 100081)
外購(gòu)數(shù)據(jù)庫(kù)在讀者門戶系統(tǒng)中的集成認(rèn)證研究
魏達(dá)賢 季士妍 范書(shū)云
(國(guó)家圖書(shū)館,北京 100081)
基于SAML和VPN認(rèn)證技術(shù),將外購(gòu)數(shù)據(jù)庫(kù)統(tǒng)一集成進(jìn)讀者門戶系統(tǒng)內(nèi),旨在實(shí)現(xiàn)各個(gè)外購(gòu)數(shù)據(jù)庫(kù)之間的單點(diǎn)登錄認(rèn)證、權(quán)限管理、分類導(dǎo)航,使讀者登錄一次讀者門戶系統(tǒng)就可以訪問(wèn)其權(quán)限范圍內(nèi)的外購(gòu)數(shù)據(jù)庫(kù),為讀者提供“可見(jiàn)即可得”的資源服務(wù)。文章重點(diǎn)介紹了用戶訪問(wèn)外購(gòu)數(shù)據(jù)庫(kù)的流程,分析了基于SAML和VPN認(rèn)證的實(shí)現(xiàn)方式。
外購(gòu)數(shù)據(jù)庫(kù);SAML認(rèn)證;讀者門戶;VPN認(rèn)證
隨著互聯(lián)網(wǎng)的普及,數(shù)字閱讀以其便利性,逐漸成長(zhǎng)為人們主要的閱讀方式之一。作為公民終身學(xué)習(xí)課堂的圖書(shū)館紛紛投入數(shù)字圖書(shū)館建設(shè),采購(gòu)了大量的數(shù)據(jù)庫(kù)資源。然而,由于數(shù)據(jù)庫(kù)廠商的權(quán)限控制,大部分外購(gòu)數(shù)據(jù)庫(kù)只能在館舍內(nèi)訪問(wèn),嚴(yán)重限制了互聯(lián)網(wǎng)用戶的使用。本文即以國(guó)家圖書(shū)館在讀者門戶系統(tǒng)中的集成認(rèn)證實(shí)踐為例,拋磚引玉,為業(yè)界同行提供參考。
近年來(lái),國(guó)家圖書(shū)館一直致力于將更廣泛的數(shù)字資源服務(wù)于讀者,因此在采選、采購(gòu)、租用外購(gòu)數(shù)據(jù)庫(kù)時(shí),注重提高數(shù)據(jù)庫(kù)內(nèi)容的豐富性、數(shù)據(jù)庫(kù)訪問(wèn)范圍的廣泛性、數(shù)據(jù)庫(kù)使用的便利性。目前,在采購(gòu)的200多個(gè)中外文數(shù)據(jù)庫(kù)中,已經(jīng)實(shí)現(xiàn)了100多個(gè)中外文數(shù)據(jù)庫(kù)的互聯(lián)網(wǎng)訪問(wèn),打破了空間限制,為廣大用戶提供了訪問(wèn)資源的便利途徑和方式。為了能讓更多的互聯(lián)網(wǎng)用戶平等、自由地獲取外購(gòu)數(shù)據(jù)庫(kù)資源,國(guó)家圖書(shū)館在“讀者門戶系統(tǒng)”內(nèi)將外購(gòu)數(shù)據(jù)庫(kù)進(jìn)行集成,使所有用戶在任何時(shí)間、任何地點(diǎn)登錄“讀者門戶系統(tǒng)”就可獲取到所需的資源,極大提高了數(shù)據(jù)庫(kù)的使用人群和利用率。
1.1 基本思路
根據(jù)國(guó)家圖書(shū)館所購(gòu)買/租用的外購(gòu)數(shù)據(jù)庫(kù)的訪問(wèn)授權(quán)范圍和服務(wù)方式,對(duì)所有外購(gòu)數(shù)據(jù)庫(kù)進(jìn)行集中管理、統(tǒng)一認(rèn)證、授權(quán)控制,從而通過(guò)“國(guó)家圖書(shū)館讀者門戶”(http://mylib.nlc.gov.cn),用戶可以一次性地獲取到所有的在線資源。
(1)用戶一次性獲取資源
以往,用戶訪問(wèn)國(guó)家圖書(shū)館的在線資源,需要從不同的入口進(jìn)入,訪問(wèn)不同的應(yīng)用系統(tǒng),這往往給用戶帶來(lái)使用的不便,也會(huì)降低資源的使用效率。通過(guò)“讀者門戶系統(tǒng)”將所有外購(gòu)數(shù)據(jù)庫(kù)進(jìn)行集中管理、統(tǒng)一認(rèn)證、授權(quán)控制,可以為用戶提供一個(gè)單一的資源訪問(wèn)入口。同時(shí),根據(jù)授權(quán)控制,在用戶統(tǒng)一認(rèn)證后,實(shí)現(xiàn)了一次登錄,可訪問(wèn)其權(quán)限許可的所有數(shù)據(jù)庫(kù)的功能,避免了用戶多次登錄的麻煩,極大地方便了用戶使用圖書(shū)館提供的在線數(shù)據(jù)庫(kù),也大大提升數(shù)據(jù)庫(kù)的使用效率。
(2)統(tǒng)一認(rèn)證無(wú)縫獲取資源
“讀者門戶系統(tǒng)”對(duì)外購(gòu)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的認(rèn)證集成,實(shí)現(xiàn)用戶的單點(diǎn)登錄[1],即一次登錄就可以訪問(wèn)眾多的數(shù)據(jù)庫(kù)。系統(tǒng)依據(jù)數(shù)據(jù)庫(kù)的系統(tǒng)軟件能否修改,將其分為可修改資源和不可修改資源?!翱尚薷馁Y源”即可將單點(diǎn)登錄組件嵌入到資源庫(kù)的系統(tǒng)軟件中,使之能接收和處理集成認(rèn)證中心發(fā)送的各種消息,稱之為信任域內(nèi)資源,反之為信任域外資源[2]。對(duì)于信任域內(nèi)的數(shù)據(jù)庫(kù),采用基于安全斷言標(biāo)記語(yǔ)言SAML規(guī)范實(shí)現(xiàn)分布式數(shù)據(jù)庫(kù)的統(tǒng)一身份認(rèn)證;對(duì)于信任域外的資源,采用基于VPN的RADIUS認(rèn)證協(xié)議實(shí)現(xiàn)統(tǒng)一身份認(rèn)證?;诖朔N模式,打破了以往用戶訪問(wèn)外購(gòu)資源庫(kù),受到所處位置的限制,真正為用戶提供了“無(wú)圍墻”的數(shù)字圖書(shū)館服務(wù)。
(3)數(shù)據(jù)庫(kù)的統(tǒng)一授權(quán)管理
為了滿足不同層次用戶的資源獲取需求,同時(shí)根據(jù)外購(gòu)數(shù)據(jù)的訪問(wèn)授權(quán)范圍,將用戶分為普通注冊(cè)用戶、實(shí)名認(rèn)證用戶、持有國(guó)家圖書(shū)館物理卡的用戶等幾種類型,每類的用戶可使用的數(shù)據(jù)庫(kù)種類和數(shù)量不同。系統(tǒng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的授權(quán)管理,根據(jù)讀者的類型,授予每類用戶不同的角色,每種角色被授予不同的數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限。這樣,既嚴(yán)格遵守了各個(gè)外購(gòu)數(shù)據(jù)庫(kù)的授權(quán)要求,又為每種類型的用戶提供了他們所能獲取的資源的最大化。
1.2 訪問(wèn)流程
國(guó)家圖書(shū)館在設(shè)計(jì)“讀者門戶系統(tǒng)”時(shí),本著“可見(jiàn)即可得”的原則,不同類型的用戶登錄后僅可以看到其權(quán)限范圍內(nèi)許可的數(shù)據(jù)庫(kù)列表。在實(shí)現(xiàn)上,系統(tǒng)將眾多的數(shù)據(jù)庫(kù)以樹(shù)狀形式,按照資源類型進(jìn)行分類導(dǎo)航,便于讀者找到所需的數(shù)據(jù)庫(kù)。用戶具體的訪問(wèn)流程如圖1所示。
圖1 用戶的訪問(wèn)流程
當(dāng)用戶訪問(wèn)“讀者門戶系統(tǒng)”網(wǎng)站時(shí),在未登錄狀態(tài)下,系統(tǒng)默認(rèn)為用戶呈現(xiàn)實(shí)名注冊(cè)用戶可訪問(wèn)的所有資源。若用戶需要進(jìn)一步訪問(wèn)資源庫(kù),則需進(jìn)行用戶登錄,登錄成功后就可以進(jìn)入到其權(quán)限允許的數(shù)據(jù)庫(kù)內(nèi)了,同時(shí)“讀者門戶系統(tǒng)”資源導(dǎo)航樹(shù)更新為相應(yīng)權(quán)限允許的數(shù)據(jù)庫(kù)列表。若用戶未注冊(cè),則跳轉(zhuǎn)到注冊(cè)頁(yè)面。在注冊(cè)時(shí),用戶可以首先注冊(cè)為普通用戶,當(dāng)用戶想擁有更多的數(shù)據(jù)庫(kù)使用權(quán)限,可進(jìn)一步完成實(shí)名驗(yàn)證,從而成為“實(shí)名認(rèn)證用戶”。持有國(guó)家圖書(shū)館讀者卡的用戶不需要注冊(cè),使用讀者卡號(hào)就可以登錄。
另外,“讀者門戶系統(tǒng)”的外購(gòu)數(shù)據(jù)庫(kù)服務(wù)分館舍內(nèi)和互聯(lián)網(wǎng)兩種服務(wù)模式。系統(tǒng)可根據(jù)用戶所處的位置,智能區(qū)分到館用戶服務(wù)和互聯(lián)網(wǎng)用戶服務(wù)。到館用戶服務(wù),則是系統(tǒng)為用戶提供不受流量限制的數(shù)據(jù)庫(kù)服務(wù),使得用戶可以無(wú)限制地閱讀、下載所需資源。同時(shí),由于在館域網(wǎng)內(nèi)訪問(wèn),速度較快;互聯(lián)網(wǎng)用戶服務(wù),則是系統(tǒng)為互聯(lián)網(wǎng)用戶提供有一定限制的數(shù)據(jù)庫(kù)服務(wù),受國(guó)家圖書(shū)館購(gòu)買的數(shù)據(jù)庫(kù)互聯(lián)網(wǎng)總流量的限制,一旦總流量使用完畢,則讀者暫時(shí)無(wú)法使用,需要國(guó)家圖書(shū)館繼續(xù)購(gòu)買流量后方可使用。因此,為了更好地服務(wù)讀者,系統(tǒng)自動(dòng)根據(jù)訪問(wèn)用戶的IP信息,智能地區(qū)分互聯(lián)網(wǎng)用戶和到館用戶,引導(dǎo)這兩類用戶進(jìn)入各自的訪問(wèn)通道,最大限度地節(jié)省互聯(lián)網(wǎng)訪問(wèn)流量。
1.3 訪問(wèn)權(quán)限控制
由于國(guó)家圖書(shū)館的用戶和外購(gòu)數(shù)據(jù)庫(kù)較多,每類用戶的資源需求不同。因此,采用RBAC訪問(wèn)控制模型[3],即通過(guò)用戶、角色、權(quán)限模型對(duì)用戶訪問(wèn)控制進(jìn)行管理。用戶、角色、外購(gòu)數(shù)據(jù)庫(kù)的授權(quán)關(guān)系如圖2所示。
每個(gè)用戶屬于不同的角色,系統(tǒng)對(duì)不同角色的訪問(wèn)權(quán)限進(jìn)行授權(quán),這樣,屬于不同角色的用戶也就具有了相應(yīng)的數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限。同時(shí)保留用戶到數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限的直接分配,增加用戶權(quán)限分配的靈活性。
基于此模型,“讀者門戶系統(tǒng)”針對(duì)不同用戶群的資源需求,將用戶分為普通讀者、實(shí)名認(rèn)證讀者、物理卡讀者(持有國(guó)家圖書(shū)館讀者卡的讀者),每類人群可使用的資源種類和數(shù)量各不相同。
圖2 訪問(wèn)權(quán)限授權(quán)
為了能對(duì)外購(gòu)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一集成管理,讓用戶通過(guò)“讀者門戶系統(tǒng)”一次登錄就可以使用眾多外購(gòu)數(shù)據(jù)庫(kù),本平臺(tái)在架構(gòu)設(shè)計(jì)上基于“統(tǒng)一用戶管理系統(tǒng)”和“讀者門戶系統(tǒng)”兩個(gè)子系統(tǒng)實(shí)現(xiàn)。兩個(gè)子系統(tǒng)的關(guān)系如圖3所示。
圖3 平臺(tái)總體架構(gòu)
“統(tǒng)一用戶管理系統(tǒng)”作為后臺(tái)管理系統(tǒng),主要實(shí)現(xiàn)用戶注冊(cè)登錄認(rèn)證、系統(tǒng)間的單點(diǎn)登錄、外購(gòu)數(shù)據(jù)庫(kù)的集成及用戶權(quán)限的管理等;“讀者門戶系統(tǒng)”是用戶訪問(wèn)數(shù)字資源的前端入口,實(shí)現(xiàn)與統(tǒng)一用戶管理系統(tǒng)進(jìn)行界面、功能上的集成,通過(guò)用戶登錄接口為用戶提供用戶注冊(cè)、登錄、認(rèn)證服務(wù),通過(guò)數(shù)據(jù)庫(kù)列表獲取接口獲取每位用戶可訪問(wèn)的外購(gòu)數(shù)據(jù)庫(kù)列表,以分類導(dǎo)航樹(shù)的方式提供給用戶。
由此可見(jiàn),“讀者門戶系統(tǒng)”負(fù)責(zé)外購(gòu)數(shù)據(jù)庫(kù)的分類揭示,提供統(tǒng)一的訪問(wèn)入口,而外購(gòu)數(shù)據(jù)庫(kù)的集成管理、用戶管理等工作都是由“統(tǒng)一用戶系統(tǒng)”負(fù)責(zé),兩個(gè)系統(tǒng)間通過(guò)接口進(jìn)行數(shù)據(jù)的傳輸。這樣降低了兩個(gè)系統(tǒng)之間的耦合度,方便了對(duì)外購(gòu)數(shù)據(jù)庫(kù)增加、刪除及權(quán)限變更等管理。
單點(diǎn)登錄是本平臺(tái)的重要功能模塊,使用戶進(jìn)行一次身份認(rèn)證便可以訪問(wèn)其被授權(quán)的所有網(wǎng)絡(luò)資源。目前主流的單點(diǎn)登錄實(shí)現(xiàn)方式是基于SAML框架協(xié)議的,該種方式需要對(duì)外購(gòu)數(shù)據(jù)庫(kù)進(jìn)行接口改造,使其符合標(biāo)準(zhǔn)接口。因此,對(duì)于可進(jìn)行接口改造的外購(gòu)數(shù)據(jù)庫(kù),國(guó)家圖書(shū)館采用SAML框架協(xié)議進(jìn)行單點(diǎn)登錄認(rèn)證;否則,采用基于VPN的RADIUS認(rèn)證協(xié)議實(shí)現(xiàn)單點(diǎn)登錄認(rèn)證。
2.1 基于SAML的認(rèn)證方式
SAML[4]是國(guó)際標(biāo)準(zhǔn)化組織OASIS安全服務(wù)協(xié)會(huì)制定的基于XML的安全標(biāo)準(zhǔn),用于在Internet不同的安全域中交換身份驗(yàn)證和授權(quán)憑證。SAML建立了一種獨(dú)立于協(xié)議和平臺(tái)的驗(yàn)證和授權(quán)交換機(jī)制,且能夠用于集中式、分散式以及聯(lián)合式的部署場(chǎng)景。這樣使得SAML具有以下特點(diǎn):它提供單次登錄身份驗(yàn)證的功能,可以大幅度地減少站點(diǎn)之間的復(fù)制安全性和身份驗(yàn)證信息的需求;SAML可令不同類型的安全服務(wù)系統(tǒng)之間實(shí)現(xiàn)交互;SAML不依賴于它所交互的任何系統(tǒng),每個(gè)系統(tǒng)都可以為用戶的身份驗(yàn)證和授權(quán)建立自己的策略。
2.1.1 基于SAML的單點(diǎn)登錄認(rèn)證模型
該模型是基于SAML框架,在用戶瀏覽器、單點(diǎn)登錄服務(wù)器與應(yīng)用系統(tǒng)之間進(jìn)行用戶身份斷言的分配、傳輸、驗(yàn)證,并采用SAML的安全機(jī)制(如SSL)保證信息傳輸?shù)陌踩T撃P途唧w如圖4所示。
圖4 SAML單點(diǎn)登錄認(rèn)證模型
第一步:用戶從登錄入口進(jìn)行登錄,單點(diǎn)登錄服務(wù)器驗(yàn)證用戶身份,并從讀者用戶庫(kù)獲取用戶的應(yīng)用系統(tǒng)訪問(wèn)權(quán)限列表。
第二步:?jiǎn)吸c(diǎn)登錄服務(wù)器為用戶生成SAML身份斷言,完成斷言的預(yù)簽名并保存在數(shù)據(jù)庫(kù)中,返回給用戶應(yīng)用系統(tǒng)權(quán)限列表,并發(fā)給用戶身份Ticket票據(jù)。
用戶Ticket票據(jù)作為用戶身份憑證,由單點(diǎn)登錄系統(tǒng)在統(tǒng)一登錄后頒發(fā),票據(jù)內(nèi)提供用戶的臨時(shí)身份id、用戶賬號(hào)、有效期等信息,可作為用戶訪問(wèn)應(yīng)用系統(tǒng)時(shí)的身份驗(yàn)證憑證。票據(jù)內(nèi)容經(jīng)過(guò)加密保護(hù),防止用戶信息外泄。
第三步:用戶從應(yīng)用系統(tǒng)權(quán)限列表中選擇所需訪問(wèn)的應(yīng)用系統(tǒng)。
第四步:應(yīng)用系統(tǒng)接收到用戶的訪問(wèn)請(qǐng)求,獲取用戶的Ticket票據(jù)信息,并根據(jù)該票據(jù)信息生成SAML身份斷言請(qǐng)求,詢問(wèn)單點(diǎn)登錄系統(tǒng)用戶的身份。
第五步:?jiǎn)吸c(diǎn)登錄系統(tǒng)將該用戶預(yù)生成的斷言形成斷言回復(fù),發(fā)送到應(yīng)用系統(tǒng),應(yīng)用系統(tǒng)驗(yàn)證用戶身份斷言的有效性后,準(zhǔn)許用戶的訪問(wèn)請(qǐng)求。
第六步:用戶從應(yīng)用系統(tǒng)中獲取資源。
2.1.2 用戶登錄后訪問(wèn)外購(gòu)數(shù)據(jù)庫(kù)的具體流程
基于上述的單點(diǎn)登錄模型,國(guó)家圖書(shū)館設(shè)計(jì)開(kāi)發(fā)了外購(gòu)數(shù)據(jù)庫(kù)的SAML認(rèn)證方式。用戶登錄后訪問(wèn)外購(gòu)數(shù)據(jù)庫(kù)的詳細(xì)流程如圖5所示。
在整個(gè)流程中,以瀏覽器cookie作為用戶Ticket票據(jù)載體,在用戶登錄時(shí)由單點(diǎn)登錄服務(wù)器寫入到用戶的客戶端上。當(dāng)用戶訪問(wèn)外購(gòu)數(shù)據(jù)庫(kù)系統(tǒng)或訪問(wèn)單點(diǎn)登錄服務(wù)器時(shí),瀏覽器會(huì)攜帶該票據(jù)cookie進(jìn)行訪問(wèn)請(qǐng)求,從而實(shí)現(xiàn)用戶Ticket票據(jù)的傳遞。這樣,在登錄的有效期內(nèi),用戶可以通過(guò)手動(dòng)輸入地址欄網(wǎng)址的方式訪問(wèn)外購(gòu)數(shù)據(jù)庫(kù),用戶體驗(yàn)較好。
2.1.3 外購(gòu)數(shù)據(jù)庫(kù)接入實(shí)例(以清華同方知網(wǎng)為例)
統(tǒng)一用戶管理系統(tǒng)為外接系統(tǒng)提供了簡(jiǎn)單、快捷的接入方式,外接系統(tǒng)需要對(duì)自身進(jìn)行部分代碼改造。當(dāng)外接系統(tǒng)接收到來(lái)自讀者門戶系統(tǒng)用戶的訪問(wèn)時(shí),外接系統(tǒng)運(yùn)行單點(diǎn)訪問(wèn)驗(yàn)證流程,判斷用戶是否有效、是否有權(quán)限訪問(wèn)本資源,從而實(shí)現(xiàn)與統(tǒng)一用戶管理系統(tǒng)間的單點(diǎn)登錄與控制。下面以清華同方知網(wǎng)為例子,說(shuō)明外接系統(tǒng)如何與統(tǒng)一用戶管理系統(tǒng)實(shí)現(xiàn)對(duì)接。
(1)知網(wǎng)與統(tǒng)一用戶管理系統(tǒng)的認(rèn)證過(guò)程
下面主要描述用戶登錄讀者門戶后訪問(wèn)知網(wǎng),知網(wǎng)與單點(diǎn)登錄服務(wù)器之間的認(rèn)證過(guò)程。
第一步:用戶登錄國(guó)家圖書(shū)館讀者門戶系統(tǒng),訪問(wèn)同方知網(wǎng)資源鏈接,頁(yè)面跳轉(zhuǎn)到知網(wǎng)首頁(yè);
第二步:知網(wǎng)系統(tǒng)通過(guò)Ticket操作接口獲取用戶Ticket票據(jù)信息;
第三步:知網(wǎng)系統(tǒng)將Ticket票據(jù)信息通過(guò)驗(yàn)證接口發(fā)送給單點(diǎn)登錄服務(wù)器作認(rèn)證;
第四步:如果單點(diǎn)登錄服務(wù)器返回認(rèn)證失敗標(biāo)識(shí),則認(rèn)證結(jié)束,知網(wǎng)系統(tǒng)跳轉(zhuǎn)到讀者門戶登錄界面,提示用戶進(jìn)行登錄;
第五步:如果單點(diǎn)登錄服務(wù)器返回認(rèn)證成功標(biāo)識(shí),知網(wǎng)系統(tǒng)則記錄用戶本地Session,認(rèn)證完成,并打開(kāi)同方知網(wǎng)頁(yè)面。
(2)知網(wǎng)系統(tǒng)代碼改造
第一步:配置文件
知網(wǎng)系統(tǒng)將統(tǒng)一用戶管理系統(tǒng)提供的keystore. jks、log4j.properties、spconfig.properties三個(gè)文件放到系統(tǒng)項(xiàng)目的src目錄下。keystore.jks為簽名用的證書(shū);log4j.properties為日志log4j的配置文件;spconfig. properties文件為單點(diǎn)登錄所需的全局配置信息。
圖5 用戶登錄后訪問(wèn)外購(gòu)數(shù)據(jù)庫(kù)的流程
第二步:所需JAVA類庫(kù)
知網(wǎng)系統(tǒng)將統(tǒng)一用戶管理系統(tǒng)提供所需的ssocnlib.jar、opensaml-2.5.0.jar包復(fù)制到應(yīng)用程序的WEB-INFlib目錄下,重新啟動(dòng)WEB服務(wù)器后生效。其中sso-cnlib.jar為單點(diǎn)登錄模塊API所在jar包,opensaml-2.5.0.jar為SAML協(xié)議實(shí)現(xiàn)的jar包。
第三步:前端頁(yè)面JS代碼整合
a) 登錄驗(yàn)證整合
首先,在知網(wǎng)系統(tǒng)的登錄網(wǎng)頁(yè)中的head部分加入代碼片段1,以獲得用戶ticket票據(jù)信息:
代碼片段1:引入獲取ticket的js
其中http://sso1.nlc.gov.cn/sso-login/為訪問(wèn)單點(diǎn)登錄服務(wù)的根url。src屬性中的rand參數(shù)是為了防止產(chǎn)生緩存。
然后編寫ticket處理操作代碼,如代碼片段2所示:
代碼片段2:?jiǎn)吸c(diǎn)登錄處理
b) 單點(diǎn)退出整合
在知網(wǎng)系統(tǒng)退出頁(yè)面的head部分加入代碼片段3,獲取用戶ticket信息,然后將ticket信息發(fā)送給單點(diǎn)登錄服務(wù)器,單點(diǎn)登錄服務(wù)器刪除ticket信息,完成退出操作。
代碼片段3:退出處理
第四步:后端業(yè)務(wù)邏輯JAVA代碼整合
a) 登錄驗(yàn)證整合
知網(wǎng)系統(tǒng)需依據(jù)代碼片段2編寫一個(gè)名稱為ssologin的servlet,完成系統(tǒng)讀者后臺(tái)認(rèn)證功能。系統(tǒng)通過(guò)代碼片段1獲取到ticket后,發(fā)送到sso-login,判斷ticket是否有效,如果無(wú)效,則跳轉(zhuǎn)到讀者門戶登錄頁(yè)面,如果有效,打開(kāi)知網(wǎng)頁(yè)面。
b) 退出整合
知網(wǎng)系統(tǒng)需依據(jù)代碼片段3編寫一個(gè)名稱為ssologout的servlet,完成系統(tǒng)讀者后臺(tái)退出功能。當(dāng)讀者執(zhí)行退出系統(tǒng)操作時(shí),系統(tǒng)將ticket信息發(fā)送到ssologout,從而退出系統(tǒng)。
第五步:其他
完成以上四步以后,基本上完成了知網(wǎng)系統(tǒng)與統(tǒng)一用戶管理系統(tǒng)的單點(diǎn)登錄集成。由于知網(wǎng)系統(tǒng)使用國(guó)家圖書(shū)館讀者數(shù)據(jù)庫(kù),不需要讀者信息的同步,讀者信息同步環(huán)節(jié)可以省略。如果外接系統(tǒng)有自己的讀者信息庫(kù),則需要讀者信息的同步工作,否則統(tǒng)一用戶管理系統(tǒng)不能識(shí)別讀者信息,不能完成系統(tǒng)間的單點(diǎn)登錄。
2.2 基于VPN的認(rèn)證方式
VPN屬于遠(yuǎn)程訪問(wèn)技術(shù),簡(jiǎn)單地說(shuō)就是利用公網(wǎng)鏈路架設(shè)私有網(wǎng)絡(luò)。在公用網(wǎng)絡(luò)上建立專用網(wǎng)絡(luò)的技術(shù),也稱為虛擬網(wǎng),它涵蓋了跨共享網(wǎng)絡(luò)或公共網(wǎng)絡(luò)的封裝、加密和身份驗(yàn)證鏈接的專用網(wǎng)絡(luò)的擴(kuò)展[5]。
國(guó)家圖書(shū)館針對(duì)無(wú)法通過(guò)SAML集成認(rèn)證的外購(gòu)數(shù)據(jù)庫(kù),采用VPN認(rèn)證的方式,使得通過(guò)認(rèn)證的館外用戶通過(guò)VPN通道,訪問(wèn)國(guó)家圖書(shū)館的資源。
基于VPN的認(rèn)證流程如圖6所示。
整個(gè)流程中,統(tǒng)一用戶管理系統(tǒng)負(fù)責(zé)用戶信息的管理、用戶身份的認(rèn)證,將驗(yàn)證后的信息反饋給VPN設(shè)備;對(duì)通過(guò)驗(yàn)證的用戶,VPN設(shè)備為其建立SSL訪問(wèn)通道,這樣用戶就可以訪問(wèn)到外購(gòu)數(shù)據(jù)庫(kù)了。具體的流程如下:
第一步:用戶訪問(wèn)國(guó)家圖書(shū)館讀者門戶系統(tǒng),通過(guò)系統(tǒng)登錄頁(yè)面填寫已在統(tǒng)一用戶管理系統(tǒng)注冊(cè)的用戶名和密碼進(jìn)行登錄。
第二步:讀者門戶系統(tǒng)將用戶填寫的用戶名和密碼發(fā)送至統(tǒng)一用戶管理系統(tǒng)進(jìn)行認(rèn)證,統(tǒng)一用戶管理系統(tǒng)對(duì)用戶下發(fā)單點(diǎn)登錄Ticket票據(jù)。
第三步:統(tǒng)一用戶管理系統(tǒng)將認(rèn)證結(jié)果返回給讀者門戶系統(tǒng),內(nèi)容包括該用戶可訪問(wèn)的外購(gòu)數(shù)據(jù)庫(kù)列表及權(quán)限等信息。
第四步:通過(guò)認(rèn)證后的用戶點(diǎn)擊門戶網(wǎng)站中受VPN保護(hù)的外購(gòu)數(shù)據(jù)庫(kù)鏈接,VPN設(shè)備獲取用戶Ticket票據(jù),并發(fā)送到統(tǒng)一用戶管理系統(tǒng)進(jìn)行用戶身份認(rèn)證。
第五步:認(rèn)證通過(guò)后,VPN設(shè)備建立用戶與外購(gòu)數(shù)據(jù)庫(kù)之間的SSL訪問(wèn)通道,用戶即可進(jìn)入外購(gòu)數(shù)據(jù)庫(kù)系統(tǒng)。
國(guó)家圖書(shū)館讀者門戶系統(tǒng)自2011年4月份上線運(yùn)行以來(lái),截至2014年1月份,通過(guò)統(tǒng)一用戶管理系統(tǒng)集成管理的外購(gòu)數(shù)據(jù)庫(kù)已經(jīng)有150多個(gè),讀者日訪問(wèn)量1萬(wàn)次,日注冊(cè)用戶平均1000人,日在線用戶2000人左右。
通過(guò)將外購(gòu)數(shù)據(jù)庫(kù)集成進(jìn)“讀者門戶系統(tǒng)”內(nèi),改變了用戶訪問(wèn)資源的方式,使讀者足不出戶就可以訪問(wèn)到國(guó)家圖書(shū)館的數(shù)字資源,方便了資源的獲取、擴(kuò)大了資源的服務(wù)人群、拓寬了服務(wù)渠道、提升了服務(wù)水平。
圖6 基于VPN認(rèn)證流程
參考文獻(xiàn)
[1]黃坤.基于SAML的單點(diǎn)登錄技術(shù)研究[J].計(jì)算機(jī)與數(shù)字工程,2012,(8):90-93
[2]王小梅.國(guó)家科學(xué)圖書(shū)館遠(yuǎn)程訪問(wèn)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代圖書(shū)情報(bào)技術(shù),2008(8):79-83.
[3]國(guó)家圖書(shū)館.國(guó)家數(shù)字圖書(shū)館統(tǒng)一用戶管理系統(tǒng)項(xiàng)目需求書(shū)[R].2011-4.
[4]羅蘭.基于SAML 2.0的WebSphere Application Server SSO實(shí)現(xiàn)[EB/OL]. [2014-01-06]. http://www.ibm.com/developerworks/ cn/websphere/librar y/techar ticles/1111_luol_sso/ 1111_luol_sso.html.
[5]王澤賢.VPN與ILAS III統(tǒng)一用戶認(rèn)證的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代圖書(shū)情報(bào)技術(shù),2011(12):79-82.
季士妍,女,1978年生,碩士生,國(guó)家圖書(shū)館高級(jí)工程師。
范書(shū)云,男,1982年生,碩士生,國(guó)家圖書(shū)館工程師。
Research on Integrated Authentication of Outsourcing Databases in the Reader Portal System
WEI DaXian JI ShiYan FAN ShuYun
(National Library of China, Beijing 100081, China)
Outsourcing databases are integrated into the reader portal system based on the SAML and VPN authentication technology, aiming at the SSO, access control, classi fi ed navigation between different outsourcing databases. Readers log in the reader portal system once, then can access databases with its scope of authority, providing "visible can be available " for readers. The paper introduces the process of accessing outsourcing databases and analyzes the realization mode of SAML and VPN authentication.
Outsourcing database; SAML authentication; Reader portal; VPN authentication
G250
10.3772/j.issn.1673—2286.2014.04.005
魏達(dá)賢,男,1980年生,工程碩士,國(guó)家圖書(shū)館工程師。E-mail: weidx@nlc.gov.cn。
2014-03-11)