祝慶績
摘 要:經(jīng)過多年的信息化建設(shè)與積累,企業(yè)內(nèi)部各信息系統(tǒng)之間形成了相互獨立的登錄體系,造成了使用和安全上的諸多不便與問題。采用CAS技術(shù)建設(shè)企業(yè)統(tǒng)一認證中心,可以實現(xiàn)企業(yè)內(nèi)部應(yīng)用系統(tǒng)的單點登錄,只需一次登錄即可訪問所有系統(tǒng),避免不同系統(tǒng)間來回切換登錄等問題,既可以提高工作效率,提升用戶體驗,也能夠有力保證用戶信息和系統(tǒng)安全,是企業(yè)信息化建設(shè)中的重要環(huán)節(jié)。
關(guān)鍵詞:統(tǒng)一認證;CAS;單點登錄;信息化;管理;安全
中圖分類號:TP39文獻標識碼:A文章編號:2095-1302(2019)08-00-04
0 引 言
信息技術(shù)發(fā)展日新月異,許多企業(yè)信息化的過程是一個不斷積累和改進的過程,多年的系統(tǒng)建設(shè)和數(shù)據(jù)積累形成了許多成熟的應(yīng)用系統(tǒng),為企業(yè)的發(fā)展作出不同的貢獻,涉及企業(yè)大部分生產(chǎn)或業(yè)務(wù),如OA,CRM,HR系統(tǒng),財務(wù)資產(chǎn)管理系統(tǒng),信息發(fā)布系統(tǒng),生產(chǎn)指揮系統(tǒng),勞資系統(tǒng),設(shè)備管理系統(tǒng)以及ERP等,種類繁多,應(yīng)用廣泛,不可或缺。
企業(yè)信息化過程中,各應(yīng)用系統(tǒng)初期均為獨立開發(fā)建設(shè),彼此相互孤立,操作相互割裂,數(shù)據(jù)相互獨立。各系統(tǒng)用戶名不統(tǒng)一,登錄時需要單獨輸入不同的用戶名和密碼。隨著企業(yè)發(fā)展與業(yè)務(wù)擴展,未來企業(yè)也將不斷增加應(yīng)用系統(tǒng),有些企業(yè)用戶權(quán)限較高,涉及業(yè)務(wù)多,如果每一個系統(tǒng)都有自己的一套用戶認證體系,登錄每個系統(tǒng)都需要單獨進行用戶認證,則使用極其不便。多套系統(tǒng)多套用戶名和口令,給用戶記憶密碼帶來困擾,因此經(jīng)常存在部分安全意識不高的用戶,將多個系統(tǒng)設(shè)置成相同的密碼甚至是空密碼,或者將密碼寫在紙上,貼在桌上,如此種種都對業(yè)務(wù)系統(tǒng)造成了極大的安全隱患,極易因為密碼泄露而造成非法入侵,甚至造成生產(chǎn)事故,同時事故責任追查難度較大。
在安全形勢日益嚴峻的今天,企業(yè)內(nèi)控要求逐漸加強,企業(yè)內(nèi)部應(yīng)用系統(tǒng)大多采用強密碼策略,要求系統(tǒng)用戶必須在三個月內(nèi)更換一次密碼,因此密碼失效和忘記密碼的事情時有發(fā)生,給系統(tǒng)管理員帶來了繁瑣的重置用戶密碼工作,加大了管理員的日常管理工作負擔,不利于系統(tǒng)維護。針對這些情況,企業(yè)建立了一個統(tǒng)一認證中心,可提供單點服務(wù),對于所有企業(yè)應(yīng)用系統(tǒng)的訪問建立了一套完整的安全防護和用戶管理機制,用戶只需要一次登錄認證成功后,就可訪問任何實現(xiàn)單點登錄授權(quán)訪問的應(yīng)用系統(tǒng),以避免頻繁登錄,有效解決了記憶多套用戶名密碼、系統(tǒng)頻繁登錄、用戶身份唯一性和合法性等問題[1]。
1 單點登錄技術(shù)
單點登錄(Single Sign On,SSO)是指在一個企業(yè)內(nèi)部的多個應(yīng)用系統(tǒng)中,用戶不用多次登錄各系統(tǒng),只需登錄一次就能夠訪問所有企業(yè)內(nèi)的應(yīng)用系統(tǒng)。用戶無需記憶不同系統(tǒng)中的用戶名、密碼,也無需多次登錄訪問不同的應(yīng)用系統(tǒng)。單點登錄無論從用戶還是企業(yè)的角度來看,都大有裨益。
從企業(yè)管理角度來說,系統(tǒng)實現(xiàn)單點登錄可以提高企業(yè)信息系統(tǒng)的安全性,提高員工工作效率,提升用戶體驗,減少管理成本,節(jié)約新建系統(tǒng)的開發(fā)成本,提高經(jīng)濟效益。
從用戶角度來說,單點登錄可以消除多系統(tǒng)、多用戶名、多密碼的問題,減輕記憶壓力,減少忘記密碼帶來的麻煩,還可以減少登錄操作,避免多次認證的重復勞動,減少了工作壓力。
從系統(tǒng)管理員的角度來說,單點登錄系統(tǒng)可以避免繁瑣的賬號密碼管理工作,更好地執(zhí)行安全密碼策略,保護系統(tǒng)安全,減少了處理用戶忘記密碼和重置密碼的工作。
從應(yīng)用開發(fā)商的角度來說,可以減少身份認證模塊的開發(fā)工作,加快開發(fā)進度,更加注重優(yōu)化業(yè)務(wù)流程,提供更好的信息服務(wù)。
2 CAS技術(shù)
CAS(Central Authentication Service,CAS)即中心認證服務(wù),它是一個開源項目,由美國耶魯大學發(fā)起,其宗旨是為基于Web的應(yīng)用系統(tǒng)或網(wǎng)站提供一種可靠的單點登錄方法。CAS的目的是使分布在企業(yè)內(nèi)部所有異構(gòu)系統(tǒng)的認證集中在一起實現(xiàn),通過公用的認證中心來統(tǒng)一管理和驗證用戶身份,實現(xiàn)集中統(tǒng)一認證。認證的用戶將獲得中心認證服務(wù)頒發(fā)的證書,用戶使用該證書即可在中心認證服務(wù)的各個系統(tǒng)上自由訪問,無需單獨登錄認證[2-3]。
2.1 CAS設(shè)計愿景
(1)基于Web應(yīng)用的統(tǒng)一認證中心實現(xiàn)易用性好,可跨域單點登錄[4]。
(2)減少管理多套密碼系統(tǒng)造成的工作負擔,消除安全隱患,實現(xiàn)統(tǒng)一的用戶身份及密碼管理。
(3)提供更加優(yōu)秀的框架設(shè)計以及彈性安全策略,降低信息系統(tǒng)設(shè)計時認證模塊的耦合度。
2.2 CAS特點
(1)CAS是一個企業(yè)級單點登錄的開源解決方案;
(2)CAS服務(wù)器(CAS Server)獨立部署為Web應(yīng)用;
(3)CAS客戶端(CAS Client)支持多種客戶端Web應(yīng)用實現(xiàn)單點登錄;
(4)CAS支持多種語言和實現(xiàn)技術(shù),包括.NET,Java,PHP,Perl,Ruby,uPortal等。
2.3 CAS原理和協(xié)議
CAS從結(jié)構(gòu)上分為兩個部分,即服務(wù)器端(CAS Server)和客戶端(CAS Client)。
服務(wù)器端(CAS Server)需要獨立部署,主要功能是負責用戶認證工作;客戶端(CAS Client)主要負責處理受保護資源的訪問請求,判斷客戶端訪問是否需要登錄,需要則重定向到CAS Server。
CAS基本協(xié)議過程如圖1所示。
采用單點登錄的客戶端需要將CAS Client集中部署,CAS Client采用Filter方式保護應(yīng)用中受保護的資源。
對于訪問受保護資源的每個Web請求,CAS Client 分析該HTTP請求中是否包含有 Service Ticket,若沒有,就表明當前訪問用戶尚未通過統(tǒng)一認證登錄,那么CAS Client就將請求重定向到CAS Server登錄地址,并傳遞要訪問的目的資源地址(Service),以便登錄成功后轉(zhuǎn)回該地址。用戶輸入用戶名和密碼等認證信息,如果認證通過,CAS Server隨機產(chǎn)生一個一定長度、唯一、不可偽造的Service Ticket,并緩存以待將來驗證,之后系統(tǒng)自動重定向到要訪問的目的資源地址,并為客戶端瀏覽器設(shè)置一個TGC (Ticket Granted Cookie,TGC),CAS Client在拿到Service和新產(chǎn)生的Ticket后,與CAS Server進行身份核實,從而確保Service Ticket的合法性。
在CAS協(xié)議中,所有與CAS的交互均采用SSL協(xié)議,以確保Service Ticket和Ticket Granted Cookie的安全。整個協(xié)議的工作過程涉及兩次重定向,但CAS Client和CAS Server之間進行Ticket驗證的過程對于用戶而言是透明的。
另外,根據(jù)官方網(wǎng)站的介紹,CAS協(xié)議中還提供代理(Proxy)模式,以適應(yīng)更復雜更高級的應(yīng)用場景,具體應(yīng)用可參考CAS官方文檔,本文不加討論。
3 統(tǒng)一身份認證服務(wù)
3.1 傳統(tǒng)身份認證服務(wù)
傳統(tǒng)應(yīng)用系統(tǒng)認證時,用戶認證的流程:用戶打開登錄頁面,輸入用戶名和密碼,點擊“提交”按鈕,用戶名和密碼信息通過瀏覽器提交至服務(wù)端的身份認證模塊,系統(tǒng)的認證模塊匹配數(shù)據(jù)庫中的用戶名和密碼信息,若信息匹配成功,則允許用戶登錄系統(tǒng),否則禁止登錄并提示登錄失敗或者跳轉(zhuǎn)回登錄頁,提示用戶重新登錄[5-7]。傳統(tǒng)身份認證流程如圖2所示。
傳統(tǒng)的身份驗證方式存在如下4個弊端:
(1)僅僅簡單檢驗用戶名和密碼是否匹配,無法做到對系統(tǒng)服務(wù)進行更小粒度的訪問控制;
(2)對于由多個子系統(tǒng)構(gòu)成的企業(yè)應(yīng)用,每個子系統(tǒng)單獨存儲用戶名和密碼,用戶必須多次注冊,頻繁切換登錄才可以使用不同的子系統(tǒng),操作過程繁瑣,用戶體驗差;
(3)每一次登錄系統(tǒng)都要傳輸用戶名和密碼,容易泄露用戶隱私信息和安全信息;
(4)統(tǒng)一的密碼安全策略難以有效實施,導致管理負擔加重和系統(tǒng)安全隱患。
3.2 統(tǒng)一認證服務(wù)系統(tǒng)架構(gòu)
統(tǒng)一認證服務(wù)平臺采用分布式結(jié)構(gòu),其分布式結(jié)構(gòu)如
圖3所示。每個應(yīng)用系統(tǒng)(生產(chǎn)管理系統(tǒng)、庫存管理系統(tǒng)、車輛調(diào)度系統(tǒng)等)都有各自的數(shù)據(jù)庫系統(tǒng),存儲用戶登錄賬戶和密碼之外的用戶基本信息、角色、權(quán)限和資源。統(tǒng)一認證中心服務(wù)器端的數(shù)據(jù)庫中保存用戶的登錄名和密碼。用戶的身份認證統(tǒng)一交給統(tǒng)一認證中心服務(wù)器完成。采用獨立部署模式能夠把認證與訪問應(yīng)用系統(tǒng)分成兩部分,通過將用戶信息的讀寫權(quán)限有效控制在統(tǒng)一認證中心服務(wù)器內(nèi),實現(xiàn)應(yīng)用系統(tǒng)需要獲取用戶登錄信息時,通過協(xié)議跳轉(zhuǎn)到統(tǒng)一認證中心服務(wù)器端獲取的目的,從而確保用戶登錄信息的安全性。統(tǒng)一認證中心的信息傳輸采用HTTPs協(xié)議,保證傳輸通道安全,各應(yīng)用系統(tǒng)和服務(wù)器端使用同一個SSL證書,以確保認證信息在傳輸過程中的保密性和安全性[8-9]。
3.3 統(tǒng)一認證服務(wù)流程
用戶在初次訪問單點登錄系統(tǒng)中的受保護資源時,客戶端的應(yīng)用系統(tǒng)會攔截用戶的訪問請求,并將訪問請求重新定向到統(tǒng)一認證中心服務(wù)器端,認證服務(wù)器獲取用戶的訪問Cookie,在服務(wù)器端檢驗用戶是否成功登錄,如果登錄成功則將請求添加一個票據(jù)傳回客戶端;如果登錄認證未成功,則將請求重新指向服務(wù)器端的登錄界面,并提示用戶未成功登錄,要求用戶重新輸入用戶名和密碼登錄。客戶端收到票據(jù)之后,再次發(fā)送請求到服務(wù)器端的票據(jù)驗證地址,以驗證票據(jù)的有效性。如果票據(jù)驗證有效,客戶端將同意用戶訪問受保護的系統(tǒng)資源;否則,將該請求重新指向到服務(wù)器端的登錄界面,并提示用戶重新輸入用戶名和密碼登錄。
統(tǒng)一認證流程如圖4所示。執(zhí)行步驟如下。
(1)用戶Web瀏覽器向受保護Web應(yīng)用服務(wù)發(fā)送初始化用戶請求。
(2)應(yīng)用在URL中附加服務(wù)ID,然后將用戶請求重定向到統(tǒng)一認證中心進行認證。如果統(tǒng)一認證中心檢測到認證票據(jù),則轉(zhuǎn)到步驟(3);如果沒有,則提示用戶輸入用戶名和密碼登錄,在用戶登錄成功后發(fā)放認證票據(jù)并進入
步驟(3)。
(3)統(tǒng)一認證中心在URL中附帶服務(wù)票據(jù)后,將用戶定向回Web應(yīng)用地址。
(4)應(yīng)用系統(tǒng)將服務(wù)票據(jù)提交至統(tǒng)一認證中心進行驗證,獲取正確的用戶身份。
3.4 統(tǒng)一認證中心核心模塊
企業(yè)統(tǒng)一認證中心由5個核心模塊組成,實現(xiàn)統(tǒng)一認證、單點登錄、注冊用戶管理等功能,統(tǒng)一認證中心平臺架構(gòu)如圖5所示。
(1)單點登錄認證服務(wù):實現(xiàn)統(tǒng)一的用戶認證服務(wù)。
(2)用戶注冊模塊:實現(xiàn)用戶注冊以及密碼找回功能。
(3)用戶信息編輯模塊:提供用戶自身的信息管理功能。
(4)應(yīng)用系統(tǒng)接口模塊:為應(yīng)用系統(tǒng)提供必需的接口。
(5)統(tǒng)一用戶管理系統(tǒng):供認證中心的系統(tǒng)管理員使用。
統(tǒng)一用戶管理系統(tǒng)供管理員實現(xiàn)對注冊用戶的管理,主要提供的功能包括管理站點信息、用戶統(tǒng)計、日志管理、賬號管理和注冊用戶管理等。系統(tǒng)用例圖如圖6所示。
3.5 技術(shù)實現(xiàn)
企業(yè)統(tǒng)一認證中心的功能采用JA-SIG CAS實現(xiàn)。JA-SIG CAS是一項開源技術(shù),為Web系統(tǒng)提供單點登錄服務(wù),具有如下兩個特性:
(1)具有開放性和文檔支持協(xié)議;
(2)擁有Java開源服務(wù)器組件,能夠提供多種類型的客戶端,如Java,Perl,.NET,PHP等,可與各種框架集成使用,如BlueSocket,Mule,TikiWiki,Moodle,Liferay,uPortal等。
系統(tǒng)采用JavaEE技術(shù)的JA-SIG實現(xiàn),基于Spring Framework技術(shù)和MVC模式開發(fā),結(jié)構(gòu)清晰,可以方便地進行擴展和二次開發(fā)。能夠支持豐富的客戶端和第三方軟件集成,支持Java,.NET,Asp等主流開發(fā)語言。采用Hibernate框架實現(xiàn)數(shù)據(jù)的持久化,支持多種數(shù)據(jù)源。數(shù)據(jù)庫采用MySQL,可以根據(jù)用戶需求移植到其他數(shù)據(jù)庫。JavaEE跨平臺性能好,易于移植和部署。
開發(fā)環(huán)境:Windows+Eclipse+Tomcat+MySQL。
發(fā)布環(huán)境:Windows/Unix/Linux,MySQL,JDK7, Tomcat7,Apache2。
客戶端:IE,F(xiàn)irefox,Chrome等主流瀏覽器。
4 結(jié) 語
采用CAS技術(shù)實現(xiàn)的企業(yè)統(tǒng)一認證中心能夠提供用戶統(tǒng)一認證服務(wù)和系統(tǒng)單點登錄功能,從而實現(xiàn)企業(yè)的各個應(yīng)用子系統(tǒng)與用戶身份認證服務(wù)分離,SSO服務(wù)器端統(tǒng)一負責處理用戶身份認證,可以細粒度地對系統(tǒng)的每個服務(wù)進行訪問控制,降低用戶登錄次數(shù),保護用戶隱私,提高信息安全和應(yīng)用程序服務(wù)安全,為企業(yè)提供更加安全的信息
環(huán)境。
參 考 文 獻
[1]李俊.一個基于JA-SIG CAS改進的SSO模型及實現(xiàn)[D].成都:電子科技大學,2011.
[2]李建佳,王晶.基于JA-SIG CAS統(tǒng)一認證平臺(SSO)的設(shè)計與實現(xiàn)[J].廣東海洋大學學報,2013,33(3):78-83.
[3]茍素潔.淺談信息系統(tǒng)統(tǒng)一身份認證和單點登錄[C]// 中國計量協(xié)會冶金分會冶煉傳感器專業(yè)委員會2012年會員代表大會及技術(shù)交流會論文集,2012:61-63.
[4]陳洪雁,萬俊偉.基于Web的企業(yè)網(wǎng)站性能優(yōu)化方案研究與應(yīng)用[J].物聯(lián)網(wǎng)技術(shù),2018,8(2):67-69.
[5]侯震.面向園區(qū)的統(tǒng)一身份認證與開放授權(quán)系統(tǒng)的研究與實現(xiàn)[D].濟南:濟南大學,2015.
[6]林偉明.基于JA-SIG CAS實現(xiàn)圖書館統(tǒng)一身份認證—以深圳大學圖書館為例[J].現(xiàn)代情報,2012,32(9):134-138.
[7]程雪穎.基于校園CAS的高校圖書館數(shù)字服務(wù)系統(tǒng)單點登錄研究與實現(xiàn)[J].農(nóng)業(yè)圖書情報學刊,2018,30(11):50-56.
[8]周游舟.企業(yè)單點登錄方案與系統(tǒng)集成應(yīng)用[J].四川職業(yè)技術(shù)學院學報,2018,28(1):159-163.
[9]佚名.CAS實現(xiàn)單點登錄詳解[EB/OL].http://wenku.baidu.c.
[10]俞靚亮.基于CAS協(xié)議的單點登錄系統(tǒng)在數(shù)字化校園中的應(yīng)用[J].電腦與信息技術(shù),2018,26(6):21-23.
[11]方源,鮑克,趙一凡,等.基于流量的工業(yè)控制系統(tǒng)入侵檢測技術(shù)[J].物聯(lián)網(wǎng)技術(shù),2018,8(10):64-65.
[12]佚名.基于.NET的單點登錄(SSO)解決方案[EB/OL].http://wenku.baidu.c.
[13]佚名.統(tǒng)一身份認證平臺集成接口文檔[EB/OL].http://wenku.baidu.c.
[14]佚名.Tomcat上CAS認證服務(wù)的SSO例子_AikeyLin-[EB/OL].http://blog.sina.com.