湯其妹
摘要:CAS(Central Authentication Service)可以為Web應(yīng)用系統(tǒng)提供一種可靠的單點(diǎn)登錄方法,應(yīng)用該方法實(shí)現(xiàn)了一個(gè)統(tǒng)一身份認(rèn)證系統(tǒng),使用戶在訪問(wèn)多個(gè)相互信任的應(yīng)用系統(tǒng)時(shí),只需要進(jìn)行一次統(tǒng)一身份驗(yàn)證過(guò)程,而不必重復(fù)登錄驗(yàn)證,大大簡(jiǎn)化了用戶訪問(wèn)網(wǎng)絡(luò)資源的過(guò)程。特別適用于高校這種業(yè)務(wù)系統(tǒng)眾多且分散在各個(gè)部門的情況。該文從CAS原理、認(rèn)證流程、實(shí)現(xiàn)方式進(jìn)行了闡述,在CAS部署方面就Server端和Client端分別給出具體的實(shí)現(xiàn)方法與詳細(xì)步驟。其研究結(jié)果對(duì)于當(dāng)前高校信息化建設(shè)和發(fā)展具有一定的實(shí)踐意義。
關(guān)鍵詞:統(tǒng)一身份認(rèn)證;CAS;智慧校園;單點(diǎn)登錄
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A
1概述
近年來(lái)隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,特別是Web應(yīng)用系統(tǒng)的流行,高校很多二級(jí)部門都針對(duì)本部門的業(yè)務(wù)開發(fā)了多個(gè)業(yè)務(wù)應(yīng)用系統(tǒng),但大多數(shù)仍采用傳統(tǒng)的身份認(rèn)證方式,即每個(gè)應(yīng)用系統(tǒng)都有各自獨(dú)立的身份認(rèn)證,這種開發(fā)模式不僅造成重復(fù)開發(fā),還嚴(yán)重影響到應(yīng)用系統(tǒng)的性能及用戶使用的方便性。為了解決這些問(wèn)題,建立一套統(tǒng)一身份認(rèn)證系統(tǒng)迫在眉睫。使用統(tǒng)一身份認(rèn)證系統(tǒng),用戶只需要輸入一次用戶名和密碼信息,驗(yàn)證成功后再訪問(wèn)系統(tǒng)中的其他資源時(shí)無(wú)須重復(fù)登錄。本文基于CAS(Central Authentication SeIvice)實(shí)現(xiàn)了統(tǒng)一身份認(rèn)證系統(tǒng),為多個(gè)相互信任的應(yīng)用系統(tǒng)提供認(rèn)證服務(wù)的接口,提高了系統(tǒng)的方便性和可操作性,并確保用戶數(shù)據(jù)信息的隱私和安全。
CAS框架通過(guò)Java開發(fā)實(shí)現(xiàn),為Web身份驗(yàn)證提供了解決方案,另外CAS為開源項(xiàng)目,可以方便地對(duì)源代碼進(jìn)行修改從而適應(yīng)各高校的個(gè)性化需求。
2單點(diǎn)登錄及CAS框架介紹
單點(diǎn)登錄和CAS框架是實(shí)現(xiàn)統(tǒng)一身份認(rèn)證平臺(tái)的關(guān)鍵技術(shù)。本小節(jié)重點(diǎn)介紹單點(diǎn)登錄、CAS框架的原理及認(rèn)證流程,并闡述相比較早期登錄技術(shù)的優(yōu)勢(shì)。
2.1單點(diǎn)登錄
隨著教育信息化的發(fā)展,高校在長(zhǎng)期的基礎(chǔ)信息建設(shè)過(guò)程中已經(jīng)建成了大量的業(yè)務(wù)系統(tǒng),分別是:教務(wù)管理系統(tǒng)、電子政務(wù)OA系統(tǒng)、財(cái)務(wù)管理系統(tǒng)、一卡通系統(tǒng)、圖書管理系統(tǒng)、網(wǎng)絡(luò)認(rèn)證計(jì)費(fèi)系統(tǒng)、研究生管理系統(tǒng)等。這些系統(tǒng)分別分散于各個(gè)建設(shè)單位,長(zhǎng)期以來(lái)積累的大量的業(yè)務(wù)數(shù)據(jù),方便了各個(gè)部門辦公,提升了一定的管理效率。同時(shí),因?yàn)檫@些系統(tǒng)在建設(shè)之初,缺乏統(tǒng)一的規(guī)劃管理,各個(gè)系統(tǒng)的數(shù)據(jù)存在相互不通的現(xiàn)象,給現(xiàn)在的學(xué)校教學(xué)、管理工作帶來(lái)了一定的困擾。師生用戶進(jìn)入不同系統(tǒng)需要輸入不同的賬號(hào)和密碼,用戶體驗(yàn)感大大降低,使用率不高,業(yè)務(wù)系統(tǒng)推廣困難。
單點(diǎn)登錄(Single Sign On,SSO),如果一個(gè)多業(yè)務(wù)系統(tǒng)應(yīng)用群中部署了單點(diǎn)登錄,則只要一次用戶身份驗(yàn)證成功,就可以獲取應(yīng)用群中其他應(yīng)用系統(tǒng)的訪問(wèn)控制權(quán)限,不需要重復(fù)登錄。
單點(diǎn)登錄機(jī)制有用戶、web應(yīng)用和認(rèn)證中心三個(gè)角色,其中認(rèn)證中心只能有一個(gè),用戶和web應(yīng)用可以有多個(gè)。與傳統(tǒng)的單個(gè)系統(tǒng)登錄機(jī)制相比較,單點(diǎn)登錄需要一個(gè)統(tǒng)一的身份認(rèn)證中心作為唯一登錄入口來(lái)接收用戶提交的賬號(hào)、密碼信息,其他web應(yīng)用間接地從認(rèn)證中心獲取授權(quán)。這種授權(quán)通過(guò)令牌機(jī)制來(lái)實(shí)現(xiàn),當(dāng)用戶的登錄信息認(rèn)證通過(guò)時(shí),認(rèn)證中心會(huì)創(chuàng)建令牌并將其傳遞到各個(gè)子系統(tǒng)。從而用戶可以被授權(quán)進(jìn)入各個(gè)子系統(tǒng)。
2.2CAS原理及認(rèn)證流程
CAS是耶魯大學(xué)發(fā)起的一個(gè)開源項(xiàng)目,能很好地實(shí)現(xiàn)單點(diǎn)登錄和統(tǒng)一身份認(rèn)證,其簡(jiǎn)單性、時(shí)效性、安全性優(yōu)勢(shì),從而被廣泛應(yīng)用。用戶通過(guò)CAS認(rèn)證,只需要一次登錄就可以在信任的應(yīng)用系統(tǒng)間互相訪問(wèn)。
CAS分為CAS服務(wù)器和CAS客戶端兩部分。
1)CAS服務(wù)器
服務(wù)器端是獨(dú)立部署的web服務(wù)器,主要負(fù)責(zé)認(rèn)證用戶的身份信息,是單點(diǎn)登錄系統(tǒng)中唯一的認(rèn)證人口。用戶名、密碼等安全信息在CAS認(rèn)證服務(wù)器中稱為用戶憑證。當(dāng)用戶身份認(rèn)證完成后,CAS服務(wù)器還負(fù)責(zé)認(rèn)證訪問(wèn)各個(gè)應(yīng)用系統(tǒng)所需要的各種票據(jù)。
2)CAS客戶端
CAS客戶端通常就是Web應(yīng)用服務(wù)器,CAS客戶端以庫(kù)文件形式嵌入到每個(gè)應(yīng)用系統(tǒng)中來(lái)實(shí)現(xiàn)和服務(wù)器端的交互認(rèn)證。當(dāng)用戶訪問(wèn)時(shí),CAS客戶端不直接進(jìn)行身份認(rèn)證,而是將請(qǐng)求重定向到CAS服務(wù)器端進(jìn)行統(tǒng)一身份認(rèn)證。目前,CAS客戶端支持JSP、PHP、ASP.NET等多種客戶端。
當(dāng)用戶通過(guò)瀏覽器訪問(wèn)CAS客戶端時(shí),客戶端會(huì)檢查http或https協(xié)議所攜帶的會(huì)話參數(shù)或是服務(wù)器會(huì)話中是否攜帶憑證ST(Service Ticket),如果都沒(méi)有,CAS客戶端就會(huì)重定向用戶的請(qǐng)求到CAS服務(wù)器端并傳遞回調(diào)地址,CAS服務(wù)器端生成TGT(Ticket Granting Ticket)并放入緩存,生成TGC(Ticket Granting Cookie)并寫入客戶端瀏覽器,生成TGT簽發(fā)一個(gè)ST,根據(jù)傳遞的回調(diào)地址和ST,用戶再重新訪問(wèn)CAS客戶端,CAS客戶端根據(jù)ST和CAS服務(wù)器對(duì)用戶身份進(jìn)行認(rèn)證。具體認(rèn)證流程如圖1所示。
3基于CAS統(tǒng)一身份認(rèn)證平臺(tái)的實(shí)現(xiàn)
基于Yale-CAS的單點(diǎn)登錄協(xié)議,并針對(duì)原有系統(tǒng)缺點(diǎn)進(jìn)行了改進(jìn),使得認(rèn)證和授權(quán)分離,并且減輕了認(rèn)證服務(wù)器的負(fù)擔(dān),減少了網(wǎng)絡(luò)傳輸,方便用戶快速訪問(wèn)資源。CAS負(fù)責(zé)簽發(fā)證書、認(rèn)證證書、并對(duì)用戶證書進(jìn)行簽名,以確保證書持有者的身份權(quán)限和公鑰的擁有權(quán)。
3.1JSP應(yīng)用接入統(tǒng)一身份認(rèn)證
Step1.拷貝統(tǒng)一身份認(rèn)證客戶端所需jar包到應(yīng)用中;
Step2.配置web.xml文件;
Step3.在應(yīng)用系統(tǒng)程序中獲取cas登錄后的用戶唯一標(biāo)識(shí)信息及其他信息。
3.2ASP NET應(yīng)用接入統(tǒng)一身份認(rèn)證
Step1.拷貝Net CasClient客戶端到應(yīng)用中;
Step2.修改web.config文件;
Step3.獲取CAS登錄后的用戶唯一標(biāo)識(shí)信息及其他信息;
Step4.退出CAS登錄。
3.3PHP應(yīng)用接入統(tǒng)一身份認(rèn)證平臺(tái)
Step1.整合CAS PHP客戶端代碼到項(xiàng)目中;
Step2.獲取CAS登錄后返回的唯一標(biāo)識(shí)信息及其他信息;
Step3.配置config.php中CAS配置參數(shù)信息;
Step4.接入CAS認(rèn)證同時(shí)獲取登錄后的信息。
以安徽醫(yī)科大學(xué)為例,已通過(guò)單點(diǎn)登錄接人13個(gè)業(yè)務(wù)系統(tǒng),分別是教務(wù)管理系統(tǒng)、教務(wù)排課系統(tǒng)、財(cái)務(wù)管理系統(tǒng)、學(xué)工系統(tǒng)、研究生管理系統(tǒng)、電子政務(wù)OA系統(tǒng)、資產(chǎn)管理系統(tǒng)、一卡通系統(tǒng)、圖書管理系統(tǒng)、網(wǎng)絡(luò)認(rèn)證計(jì)費(fèi)系統(tǒng)、站群系統(tǒng)、郵件系統(tǒng)、網(wǎng)絡(luò)教學(xué)平臺(tái)。如圖3、圖4所示。
4部署與測(cè)試
CAS部署分別對(duì)服務(wù)器端和客戶端進(jìn)行部署,部署結(jié)構(gòu)圖見圖5。
4.1server端部署
服務(wù)器端運(yùn)行環(huán)境:
操作系統(tǒng)名稱:Cetos