999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Jasig CAS實現圖書館統一身份認證

2012-04-29 16:19:51林偉明
現代情報 2012年9期
關鍵詞:圖書館

林偉明

〔摘 要〕為了解決圖書館各個服務系統的統一認證問題,提出了基于Jasig CAS實現統一身份認證的解決方案,并對其中所涉及的關鍵技術進行了描述。利用該方案,實現了深圳大學圖書館統一身份認證,為需要實現統一認證的其他圖書館提供了參考。

〔關鍵詞〕統一身份認證;CAS;圖書館

〔中圖分類號〕TP391 〔文獻標識碼〕B 〔文章編號〕1008-0821(2012)09-0134-05

近年來,隨著圖書館數字化建設的不斷推進,越來越多基于Web的服務系統為圖書館提供服務支撐。如聯機公共目錄查詢系統OPAC、圖書館門戶網站、校外遠程訪問系統EZProxy[1]、下一代互聯網校園學習生活交流平臺CARSI Portal[2-3]、CALIS中心的應用系統[4]、讀者問卷調查系統等。這些服務系統都有自己一套獨立的身份認證機制,所使用的技術架構也不盡相同,這樣導致用戶在使用這些系統時都需要輸入用戶賬號和密碼信息,加大了認證復雜度,降低了圖書館服務的易用性。

單點登錄,指的是用戶登錄一次后,可以訪問所有互相信任的應用系統而不再需要身份驗證。單點登錄可以降低認證復雜度,方便用戶使用圖書館的服務,提高了圖書館資源的共享率。因此如何實現統一身份認證已成為圖書館亟待解決的重要問題之一。

1 需求及技術思路

目前,深圳大學圖書館為讀者提供了OPAC、門戶網站、期刊電子資源瀏覽下載、CARSI Portal、CALIS“E讀”、CALIS館際互借與文獻傳遞、深圳文獻港[5]等服務。這些服務所使用的開發技術不盡相同,其中OPAC是采用ASP.NET技術自主研發的;門戶網站是采用SupeSite(一款由Discuz開發的PHP+MySql的內容管理系統平臺)進行管理;期刊電子資源瀏覽下載的校外服務,本館采用了目前被國外廣泛使用的實現校外訪問代理軟件EZProxy;CARSI Portal是由北京大學發起的采用Java技術解決聯盟內部進行高校資源共享問題的門戶;CALIS“E讀”、CALIS館際互借與文獻傳遞是CALIS(中國高等教育文獻保障系統)提供的服務;深圳文獻港的開發技術是Java。

這些服務都有各自的應用系統來支撐,而且具有相對獨立的身份認證模式。因此本館需要統一認證方案,來解決用戶單點登錄問題。

在國內,一些教育機構使用Jasig CAS[6]來解決統一認證問題。如國家科學圖書館[7],北京郵電大學圖書館[8],浙江林學院數字化校園[9],國家科技基礎條件平臺專項資助的地球系統科學數據共享網[10]。劉峰等基于CAS解決門戶單點登陸問題,并提出支持單點退出的改進方案[11]。宋春麗等基于CAS與Web服務對遺留系統進行集成[12]。

國外的一些軟件產品[13]如uPortal、Liferay portal、Kuali Workflow、Kuali Notification等集成了CAS客戶端,用戶在使用這些產品時可以輕松地接入基于CAS的統一認證平臺。

因此,本館擬采用CAS來實現統一身份認證平臺。解決思路如下:基于CAS服務器端技術,搭建認證服務平臺,同時該平臺需要能與本校的一卡通認證方式接入;研究CAS客戶端技術,為OPAC、門戶網站等加入CAS客戶端;研究EZProxy、CARSI Portal、CALIS“E讀”、CALIS館際互借與文獻傳遞、深圳文獻港等接入CAS認證平臺的問題。

2 基于CAS的統一認證方案

Jasig是一個由教育機構和為高等教育貢獻開源軟件項目的商業公司組成的聯盟。CAS(Central Authentication Service)是由Yale大學發起的一個開源項目,在2004年正式成為Jasig的一個項目。該項目針對應用系統提供了一套安全可靠的企業級單點登錄解決方案。

CAS分為服務器端Server和客戶端Client兩部分。CAS Server需要獨立部署,主要負責進行用戶身份認證;CAS Client則負責處理對受保護資源的訪問請求,當需要用戶進行登錄時,重定向到CAS Server。圖1展示了CAS認證過程。

首先用戶通過Web瀏覽器訪問所需的受保護Web應用;該Web應用通過內嵌的CAS客戶端把請求轉向CAS服務端;CAS服務端判斷用戶是否已經登錄,如果沒有則打開認證界面供用戶進行身份驗證;認證通過后,CAS服務端向Web應用傳輸生成的票據(Ticket);CAS客戶端把取得的票據向CAS服務端請求驗證票據;驗證通過后,Web應用可以通過CAS客戶端向服務端取得認證通過的用戶ID,并向用戶提供其所請求的服務。

從圖1可以看出,CAS的核心就是其票據以及在票據上的一系列處理。

CAS Server支持多種不同類型的認證方式,如數據庫認證方式、微軟的活動目錄方式(Active Directory)、輕量目錄訪問協議(LDAP)、X.509數字認證、Java驗證和授權API(JAAS)方式等。

CAS Client支持多種開發語言(如Java、ASP.NET、PHP等),方便開發者集成到應用系統中。在官方網站上有針對每種語言的開發指南,并提供了相應的例子作為參考。

本文選擇CAS來架設深圳大學圖書館統一認證服務平臺。平臺體系結構如圖2。

平臺需要獨立架設一個CAS認證服務器,并提供HTTPS傳輸協議。該服務器的認證服務使用深圳大學校園卡中心提供的認證接口,支持校園卡方式登錄。在OPAC系統、門戶網站中,集成CAS Client,改造驗證模式。EZProxy、CARSI門戶的認證本身支持與CAS服務端接入,因此只需要根據相關資料進行配置。對于CALIS統一認證中心,需要開發CALIS認證接入API,并在其中集成CAS Client。在CAS認證服務器上,根據深圳文獻港認證接入文檔,為深圳文獻港的認證服務開發OPEN API。

CAS認證服務僅負責用戶身份驗證及圖書館服務使用權限的判斷,對于具體的各應用系統中各模塊的權限設置,還是由各應用系統負責。

2.1 統一認證平臺服務端的實現

深圳大學擁有校園一卡通系統,因此圖書館的認證服務希望能讓用戶直接使用校園卡來進行登錄。本館自主開發的OPAC是用ASP.NET進行開發的,里面集成了調用校園一卡通驗證的服務。為了重用這服務,提高開發效率,本文選擇ASP.NET作為CAS認證服務端搭建的底層技術。

首先需要實現包含CAS Server服務的認證服務端。Jasig CAS的服務端和客戶端是使用Java語言編寫的,并在官方網站上提供了許多其他語言編寫的CAS客戶端,但沒有ASP.NET版本的服務端實現例子。UliTrampe提供了一套解決方案,使得在ASP.NET上可以模擬實現Jasig CAS的服務端,同時提供客戶端調用的例子[14]。本文并將里面的CasAuthenticator.cs,CasServer.cs,CasTicket.cs文件引入服務端項目中。

圖2 深圳大學圖書館統一認證平臺體系結構

接著在項目中建立一個ASP.NET頁面如cas.aspx,用于接收用戶瀏覽器的用戶認證請求以及內嵌的CAS客戶端的Web應用的票據認證請求。調用CasServer類,由它來處理CAS服務端的所有事務。把cas.aspx的頁面表現設計為登錄頁面,并處理提交的密碼驗證請求,驗證通過后繼續交給CasServer類處理驗證成功后的工作,如生成票據返回到請求的Web應用頁面等。為了不讓統一認證服務被惡意使用,增加了應用服務許可列表文件,用于對接入認證的Web應用進行控制。具體的邏輯處理流程如圖3所示。

關鍵步驟及代碼如下:

聲明cas.aspx頁面類需要實現ICasAuthenticator接口;

在cas.aspx頁面實現ICasAuthenticator接口的CasCheckPermission方法、CasLogin方法、CasLogout方法、CasTranslateService方法。其中CasCheckPermission加入驗證請求使用統一認證的應用是否合法的判斷。CasLogin加入標記用戶已經登錄的處理。CasLogout加入用戶注銷的處理及注銷后跳轉的代碼。代碼如下:

public bool CasCheckPermission(string strUserName,string strService){

CASControlBLL cascbll=new CASControlBLL();

return cascbll.IsEnabledHostName(strService);∥判斷應用是否合法

}

public void CasLogin(string strUserName,bool doRemember){

FormsAuthentication.SetAuthCookie(strUserName,doRemember);∥標記已經登錄

}

public void CasLogout(){

FormsAuthentication.SignOut();∥用戶注銷

…∥注銷后跳轉處理

}

在cas.aspx頁面服務端代碼的PagezLoad方法中,加入:

CasServer.HandlePageLoad(this);

在cas.aspx中設計登錄界面,并在服務端代碼中處理登錄請求。關鍵代碼如下:

protected void btnSubmitzClick(object sender,EventArgs e){

string strUserName=this.txtcardno.Text;∥取得用戶輸入的校園卡號

string strPassWord=this.txtPass.Text;∥取得用戶輸入的密碼

string strCCode=this.txtCode.Text;∥取得用戶輸入的驗證碼

if(PerformAuthentication(strUserName,strPassWord,strCCode)){∥驗證用戶

∥判斷此次請求是否是CAS請求,并處理此次請求

if(CasServer.HandlePageLogin(this,strUserName,false))return;

∥不是CAS請求,則按普通認證成功處理

FormsAuthentication.RedirectFromLoginPage(strUserName,false);

phErrorInfo.Visible=false;

}

else{

∥顯示出錯信息

phErrorInfo.Visible=true;

}

}

為了增強統一認證平臺的安全性,在登錄頁面增加了驗證碼技術。此外,圖書館向提供SSL證書服務的公司購買了SSL安全證書,并根據該公司提供的在IIS服務器上的安裝文檔,為認證平臺架設了HTTPS傳輸協議。

統一認證平臺提供了根據校園卡號取得包括姓名、單位等用戶信息的Web服務,為有需要的應用提供服務。

2.2 各應用系統接入統一認證平臺的實現

2.2.1 OPAC接入統一認證平臺

為了使OPAC接入統一認證平臺,需要改進OPAC原有的用戶認證程序,使用CAS客戶端技術與統一認證平臺進行認證交互。首先在OPAC項目中加入UliTrampe所提供的CasClient.cs文件,然后修改OPAC的用戶認證程序,使得OPAC在需要檢測用戶的登錄狀態時,把請求發往統一認證平臺。用戶登錄后,OPAC從統一認證平臺取得用戶的校園卡號,并在數據庫中檢測該用戶是否具備訪問的權限。關鍵代碼如下:

protected void PagezLoad(object sender,EventArgs e){

if(islog){

∥登錄成功,跳轉

}

else{∥向統一認證平臺發請求,判斷是否已經登錄了

if(CasClient.HandlePageLoad(CASConfigHandle.GetCASLoginURL(),CASConfigHandle.GetCASValidateURL(),CASConfigHandle.GetCASServerURL(),out strUserName, out strErrorText)){

if(strUserName!=″″){

∥返回了用戶名,說明在統一認證平臺驗證通過

∥判斷用戶的權限,并進行登錄成功后的相關處理

∥登錄成功后跳轉

}

}

}

}

2.2.2 圖書館門戶接入統一認證平臺

使用基于PHP的CAS客戶端phpCAS來實現圖書館門戶的認證接入。首先從Jasig CAS的官方網站下載phpCAS,并在需要驗證用戶是否登錄的頁面加入關鍵代碼:

requirezonce(″CAS.php″);--導入phpCAS

phpCAS::client(CASzVERSIONz2z0,′localhost′,8443,′cas′,true);--填寫CAS服務端的地址、端口

phpCAS::setNoCasServerValidation();

phpCAS::forceAuthentication();

if(phpCAS::isAuthenticated()==true){--登錄成功后可通過phpCAS::getUser()取得認證后的用戶卡號}

else{--認證失敗處理}

2.2.3 EZProxy接入統一認證平臺

EZProxy支持多種認證方式,其中包括CAS認證方式。在EZProxy的安裝目錄下,打開user.txt,對原來的登錄方式進行注釋,并加入如下配置代碼:

::CAS

LoginURL http:∥cas服務端登錄地址

ServiceValidateURL http:∥cas服務端票據驗證地址

/CAS

修改后重新啟動EZProxy服務,讓上述配置代碼生效。

2.2.4 CARSI Portal接入統一認證平臺

CARSI Portal的認證方式是基于Shibboleth項目[15]。Shibboleth包括2個主要的組件:身份提供者(Identity Provider,簡稱IdP)和服務提供者(Service Provider,簡稱SP)。其中Idp主要負責對用戶身份進行認證和對用戶屬性進行管理,并且支持CAS認證接入。所以只需要在深圳大學圖書館的IdP中配置為CAS認證,填寫相應的CAS服務地址及票據驗證地址,就可以達到接入的要求。

此外,還需要在認證平臺上,開發用于傳遞用戶屬性的Web服務。然后根據CARSI的文檔,使用Java語言開發UserAttributeService類、UserAttribute類,提供給CARSI調用取得用戶屬性。UserAttributeService的關鍵代碼如下:

public static UserAttribute getUserAttribute(String cardNo)throws AxisFault{

…∥采用Axis2的OM調用方式調用ASP.NET提供的Web服務

OMElement responseresult=response.getFirstElement();

∥運用BeanUtil的processObject方法把Web服務結果的轉為CARSI需要的UserAttribute類

UserAttribute ua=(UserAttribute)BeanUtil.processObject(responseresult,UserAttribute.class,null,true,new DefaultObjectSupplier());

return ua;

}

2.2.5 CALIS認證接入統一認證平臺

CALIS為其提供的公共服務應用系統架設了統一認證平臺,因此本文根據CALIS認證平臺接入文檔,開發深圳大學圖書館接入CALIS認證平臺的登錄驗證接口以及授權驗證接口,并讓登錄驗證接口與深圳大學圖書館統一認證平臺接入,從而達到單點登錄的目的。需要增加一個頁面logincalis.aspx,用于接入統一認證平臺,其關鍵代碼與OPAC中的登錄頁面關鍵代碼類似。需要一個頁面idp.aspx,用于接收CALIS的SP轉發的登錄認證請求,在該頁面加入的功能。關鍵代碼如下:

protected void PagezLoad(object sender,EventArgs e){

∥接收CALIS發送的sp,goto,idp參數

if(已經登錄){

∥如果已經登錄了,生成CALIS要求的artifact參數并附加在sp地址上,把請求轉發到sp地址上。

}else{

∥沒有登錄,將請求轉發給logincalis.aspx

string returnurl=Request.Url.OriginalString;

Response.Redirect(″../logincalis.aspx?ReturnUrl=″+HttpUtility.UrlEncode(returnurl));

}

}

需要一個頁面loginvalidservice.aspx,用于處理CALIS的SP發過來的授權驗證請求,在該頁面往統一認證平臺發送票據驗證請求。關鍵代碼如下:

protected void PagezLoad(object sender,EventArgs e){

∥接收CALIS發送的artifact參數

if(artifact參數是否合法){

∥如果合法,生成CALIS要求的用戶信息。

}else{

∥告訴CALIS不合法的原因。

}

}

3 應用效果

如圖4所示,訪問深圳大學圖書館統一認證平臺所保護的服務系統時,在沒有登錄前,系統都跳轉至統一認證界面,認證通過后,用戶訪問這些服務系統不再需要進行二次登錄。

圖4 深圳大學圖書館統一認證效果

實踐證明,深圳大學圖書館的各個應用服務可以使用基于CAS的統一認證平臺來對用戶身份認證進行集中管理,只要在平臺上登錄一次,就可以訪問統一認證平臺控制下的所有應用,實現遠程單點登錄訪問,提高了資源的共享率,減輕用戶登錄系統使用繁瑣的負擔。

4 結 語

本文選取Jasig CAS技術來架設、開發與部署統一認證服務平臺,有效地解決了深圳大學圖書館統一認證問題。用戶一次登錄后就可以無縫訪問所有受保護的Web應用服務,減少了用戶的認證復雜度,節省了用

戶的精力,提高了效率。對于其他需要接入統一認證服務平臺的應用系統,只需要根據自身的程序語言,集成相應的CAS客戶端就可以進行接入,簡單方便。此外,方案中采用HTTPS作為認證信息的傳輸協議,安全可靠。目前,該認證平臺已經正式在深圳大學圖書館使用,其他高校可借鑒此方案來解決多個系統間的統一認證問題。雖然統一認證服務減輕了用戶認證的負擔,但用戶使用圖書館的服務仍然不是太方便。隨著云計算概念的出現,未來圖書館的各種應用服務應提升至云服務平臺,讀者僅需要登錄云服務平臺就能享受圖書館提供的各類服務。

參考文獻

[1]EZProxy[EB/OL].http:∥www.oclc.org/us/en/ezproxy/,2012-02-17.

[2]CARSI[EB/OL].http:∥www.carsi.edu.cn/zh/,2012-02-17.

[3]Carsi Portal[EB/OL].http:∥ds.carsi.edu.cn/portal/,2012-02-17.

[4]CALIS[EB/OL].http:∥www.calis.edu.cn/,2012-02-17.

[5]深圳文獻港[EB/OL].http:∥www.szdnet.org.cn/,2012-02-17.

[6]Jasig CAS[EB/OL].http:∥www.jasig.org/cas,2012-02-17.

[7]許雁冬,李宇.國家科學圖書館單點登錄系統設計與實現[J].現代圖書情報技術,2009,(10):28-33.

[8]王慶恒,馬自衛,李高虎.統一檢索服務關鍵技術的研究與實現[J].現代圖書情報技術,2010,(4):18-23.

[9]李遙,朱曉蕓,楊棖.異構系統統一數字平臺的構建[J].計算機工程,2005,31(5):230-233.

[10]劉潤達,諸云強,宋佳,等.一種簡單跨域單點登錄系統的實現[J].計算機應用,2007,27(2):288-291.

[11]劉峰,王崢,曹華平,等.基于CAS的門戶單點登錄方案[J].計算機系統應用,2011,20(6):77-102.

[12]宋春麗,張仁津,謝剛.基于CAS與Web服務的遺留系統集成框架研究[J].武漢大學學報:理學版,2011,57(5):424-428.

猜你喜歡
圖書館
去圖書館坐坐
發明與創新(2021年6期)2021-03-10 07:13:54
圖書館
圖書館里送流年
圖書館
文苑(2019年20期)2019-11-16 08:52:12
夜間的圖書館
幽默大師(2019年5期)2019-05-14 05:39:38
圖書館里的小驚喜
圖書館 Library
幼兒畫刊(2018年11期)2018-12-03 05:11:44
時間重疊的圖書館
文苑(2018年17期)2018-11-09 01:29:40
圖書館
小太陽畫報(2018年1期)2018-05-14 17:19:25
飛躍圖書館
主站蜘蛛池模板: 嫩草在线视频| 亚洲综合片| 青青青国产免费线在| 国产丰满成熟女性性满足视频| 国产尤物在线播放| 国产精品久久久久久久久kt| 国产精品视频公开费视频| 人妻无码AⅤ中文字| 国产99久久亚洲综合精品西瓜tv| 五月婷婷丁香色| 亚洲色图欧美视频| 国产欧美日韩综合在线第一| 国产一区二区精品福利| av一区二区无码在线| 制服丝袜一区| 亚洲一道AV无码午夜福利| 高清欧美性猛交XXXX黑人猛交| 亚洲日韩欧美在线观看| 国产亚洲精品自在线| 99国产精品免费观看视频| 午夜国产精品视频| 亚洲Av综合日韩精品久久久| 国产一级二级在线观看| 亚洲色欲色欲www在线观看| 青青青国产视频| 天天婬欲婬香婬色婬视频播放| 67194成是人免费无码| 国产精鲁鲁网在线视频| 国产手机在线观看| 亚洲最新在线| 日韩一区二区在线电影| 国产精品视频猛进猛出| 欧美视频二区| 欧美成人综合视频| 免费 国产 无码久久久| 国产在线观看91精品亚瑟| 精品99在线观看| 国产chinese男男gay视频网| 国产精品嫩草影院视频| 99成人在线观看| 国产精品久久久久久久久kt| 91精品啪在线观看国产| 日韩a级毛片| 在线日韩日本国产亚洲| 精品少妇人妻av无码久久| 国产亚洲视频播放9000| 国产精品视频第一专区| 奇米影视狠狠精品7777| 久久婷婷色综合老司机| 宅男噜噜噜66国产在线观看| 成人午夜视频在线| 999国内精品视频免费| 在线看国产精品| 国产成人艳妇AA视频在线| 少妇极品熟妇人妻专区视频| 日韩av手机在线| 韩国v欧美v亚洲v日本v| 日a本亚洲中文在线观看| 制服丝袜国产精品| 亚洲激情区| 成人在线不卡视频| 九九久久精品免费观看| 永久免费精品视频| 狠狠色香婷婷久久亚洲精品| 久久中文字幕2021精品| 国产特级毛片aaaaaa| 伊人久久久久久久| 亚洲一欧洲中文字幕在线| 欧美成人精品在线| 亚洲国产成人久久77| 日韩av高清无码一区二区三区| 亚洲av日韩av制服丝袜| 91九色最新地址| 99精品伊人久久久大香线蕉| 一本一本大道香蕉久在线播放| 日本高清成本人视频一区| 国产麻豆精品久久一二三| 毛片视频网址| 小说区 亚洲 自拍 另类| 欧美日韩福利| 亚洲国产日韩在线成人蜜芽| 精品一区二区三区中文字幕|