杜焱喆
摘要:在網(wǎng)絡技術(shù)日益發(fā)達的今天,高校校園網(wǎng)中出現(xiàn)了越來越多的應用系統(tǒng),各應用系統(tǒng)之間沒有采用統(tǒng)一的用戶賬號,密碼和相同的身份驗證方式,導致用戶無法實現(xiàn)登錄一次,多系統(tǒng)漫游,為了解決這個問題,該文提出了一種基于CAS-中心認證服務技術(shù)的單點登錄及統(tǒng)一身份認證系統(tǒng),對用戶實行統(tǒng)一的身份認證,從而實現(xiàn)將應用系統(tǒng)孤島連成應用系統(tǒng)島群。提高了用戶體驗,并為將來的應用數(shù)據(jù)對接打下了堅實基礎。
關鍵詞:校園網(wǎng);CAS;單點登錄
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2015)05-0074-02
隨著“互聯(lián)網(wǎng)+”時代的到來,校園網(wǎng)的發(fā)展已經(jīng)走過二十多個年頭,學校在校園網(wǎng)內(nèi)部建設了各種各樣的業(yè)務系統(tǒng),這些業(yè)務系統(tǒng)都是獨立開發(fā)的,采用的技術(shù)和數(shù)據(jù)標準都不一致。例如財務會計、協(xié)同辦公、教務管理、圖書管理等等。系統(tǒng)管理員必須為每套系統(tǒng)導入用戶身份信息,當用戶信息發(fā)生變化時,需要到每個系統(tǒng)中去修改身份數(shù)據(jù)。這種情況在每個高校的校園網(wǎng)建設過程中都普遍存在。
我們需要找到一個解決方案能更加有效地管理校園網(wǎng)的業(yè)務系統(tǒng),必須簡化系統(tǒng)賬號管理,減少用戶操作,這是所有校園網(wǎng)遇到的共性問題。本項目的研究意義也就在此,旨在為校園網(wǎng)用戶找到一個好的解決方案,實現(xiàn)單點登錄和統(tǒng)一身份論證。
1 CAS技術(shù)概況
CAS(Central Authentication Service – 中心認證服務)主要是為了讓內(nèi)部的多個不同業(yè)務系統(tǒng)能協(xié)同工作并通過統(tǒng)一的身份認證系統(tǒng)驗證用戶合法性[1]。通過CAS認證的用戶將使用CAS認證系統(tǒng)頒發(fā)的證書在CAS認證范圍內(nèi)的各系統(tǒng)之間自由訪問,不需要再次登錄[2]。
從系統(tǒng)結(jié)構(gòu)上看,CAS 包含了CAS Server(服務端)和 CAS Client(客戶端)兩個部分。CAS Server 需要獨立安裝部署,主要用來負責對用戶進行認證;CAS Client 負責處理對客戶端受保護資源的訪問請求[3]。圖1是 CAS 的認證機制。
2 單點登錄流程
在進行單點登錄認證時,主要涉及Session和Cookie這兩個概念[4]。Session是指一個會話的連接保持時間,如果用戶長時間未操作,系統(tǒng)就會自動斷開這個會話連接,以便釋放資源也可供其他用戶連接。Cookie就是應用系統(tǒng)在客戶機留下的一串標識資料,通過這個標識可以告訴應用系統(tǒng)該用戶曾經(jīng)登錄過[5]。
由圖2可以看出,在進行用戶身份認證時,CAS Server會先檢測是否存在Session,如果沒有檢測到Session,就會檢查客戶端是否存在Cookie。如果Cookie存在,就繼續(xù)檢測Cookie有沒有過期,如果Cookie失效,則返回登錄頁面;若有效,則CAS Server根據(jù)Cookie上的信息進行身份驗證,驗證通過后創(chuàng)建一個新Session,進入應用系統(tǒng)。這樣既可以避免用戶反復登錄驗證,也可以更有效地利用資源。
3 系統(tǒng)實現(xiàn)
系統(tǒng)設計中主要包括以下兩方面的內(nèi)容:一是當輸入某個應用系統(tǒng)地址,重定向到統(tǒng)一認證界面的URL地址上,身份認證通過后轉(zhuǎn)回該應用系統(tǒng),此時同時進入其他應用系統(tǒng)也是無需認證直接進入的;二是用戶直接訪問統(tǒng)一身份認證界面,身份認證通過后,在統(tǒng)一門戶平臺上列出各應用圖標,點擊圖標統(tǒng)就可以直接進入各應用系統(tǒng)。以下是實施方法:
1)將CAS Client Jar客戶端包放在需集成的應用系統(tǒng)的WEB-INF/lib文件夾下。
2) 在需集成的應用系統(tǒng)中增加XML配置文件。
在集成系統(tǒng)的WEB-INF/classes目錄下新增casFilterConfig.xml配置文件,,代碼演示如下:
<?xml version="1.0" encoding="UTF-8"?>
……
3) 修改應用系統(tǒng)登錄入口。
此處是單點登錄實現(xiàn)的關鍵,有兩種方案,分別介紹如下:
①方案一:保留原有系統(tǒng)的入口,新增單點登錄入口,新增的入口與統(tǒng)一門戶集成
在需集成的應用系統(tǒng)的WEB-INF目錄下的配置文件web.xml中,加入CAS Filter相關的過濾器配置內(nèi)容,代碼如下:
本次系統(tǒng)設計采用JSP語言,以上是新增的入口配置文件ecjtucas.jsp,放置在應用系統(tǒng)的根目錄下。
接下來是新增入口的代碼實現(xiàn):
引入cas認證類代碼:
<%@ page import=" cn.edu.ecjtu.cas.tp.sso.client.filter.CASFilterRequestWrapper" %>
/*認證類引入*/
CASFilterRequestWrapper reqWrapper=new CASFilterRequestWrapper(request);
String userID = reqWrapper.getRemoteUser(); /*獲得正在驗證的用戶賬號*/
登錄代碼:
首先獲得正在驗證的用戶帳號,然后在應用系統(tǒng)中判斷這個用戶是否存在:如果存在,則認證通過;如果不存在,按照應用系統(tǒng)業(yè)務邏輯處理。認證通過后,從request返回的參數(shù)中獲取redirectUrl:如果為空,則跳轉(zhuǎn)到應用系統(tǒng)的首頁;如果不為空,則跳轉(zhuǎn)到參數(shù)值中的頁面。
String Redirecturstrl = request.getParameter("redirectUrl");
if(Redirecturstr != null&& Redirecturstr.length() > 0) {
response.sendRedirect(Redirecturstr);
}else{
response.sendRedirect("http://*.ecjtu.edu.cn");
}
②方案二:封閉原有登錄入口,統(tǒng)一使用CAS認證入口。
在需集成的應用系統(tǒng)WEB-INF目錄下的web.xml文件中,加入CAS Filter相關的過濾器配置。
應用系統(tǒng)統(tǒng)一CAS認證入口代碼如下:
<%@ page import=" cn.edu.ecjtu.cas.tp.sso.client.filter.CASFilterRequestWrapper" %>
/*認證類引入*/
CASFilterRequestWrapper reqWrapper=new CASFilterRequestWrapper(request);
String userID = reqWrapper.getRemoteUser();
/*改變原有的帳號密碼獲取方式,采用統(tǒng)一認證獲取賬號密碼*/
4 結(jié)束語
本文詳細介紹了CAS-中心認證服務技術(shù)的原理及工作流程,并采用CAS技術(shù)設計與實現(xiàn)了單點登錄和統(tǒng)一身份認證。用戶只需在業(yè)務系統(tǒng)或統(tǒng)一認證界面登錄一次,即可在多個應用系統(tǒng)之間來回切換,不需要再次驗證用戶賬號及密碼。目前,統(tǒng)一身份認證已成功部署,并正常運行。本系統(tǒng)的不足之處在于,針對各應用系統(tǒng)的情況要導入客戶端包,并進行一些代碼修改,在應用系統(tǒng)協(xié)調(diào)方面仍存在問題,需要進一步思考完善并解決。
參考文獻:
[1] 張劍. 基于CAS的高校單點登錄系統(tǒng)研究及設計[J]. 軟件導刊:教育技術(shù),2015(7): 60-62.
[2] 蘇星曄,徐方南. 統(tǒng)一身份認證技術(shù)研究[J]. 中國新通信,2015(2):58.
[3] 楊薇,劉陽. 基于CAS的統(tǒng)一權(quán)限平臺的設計與實現(xiàn)[J]. 艦船電子工程,2014(1):112-115.
[4] 吳曉潔. 基于CAS的單點登錄系統(tǒng)的實現(xiàn)[J]. 科技信息,2013(26):290-291.
[5] 董丹. 高校自主開發(fā)校園信息化平臺研究[J]. 吉林省教育學院學報:中旬,2013(12): 77-78.