邵怡琳,龐 博
(商丘職業(yè)技術學院,河南 商丘 476000)
隨著Java的流行,Tomcat作為一個開源的servlet容器,在Web上的應用也越來越廣闊.J2EE是Sun公司開發(fā)的一個架構,是一個實現(xiàn)企業(yè)級編程的平臺,可以利用其提供的組件技術來搭建應用[1]32-33.而Tomcat是一個Web服務器工具,它為J2EE的架構提供支持.
Tomcat因其運行時占用的系統(tǒng)資源小、擴展性好的特點,以及支持負載平衡與郵件服務等開發(fā)應用系統(tǒng)常用的功能[2]260-272,很受廣大程序員的喜歡,多用于中小型項目的開發(fā).
單點登錄SSO(Single Sign On),在擁有較多功能模塊或子系統(tǒng)的系統(tǒng)中有廣泛的應用,它用于實現(xiàn)用戶一次登錄可以訪問系統(tǒng)中的多個子系統(tǒng)而不必再次登錄.實施單點登錄可以簡化用戶身份認證的次數(shù),提高系統(tǒng)的安全性.Yale CAS是耶魯大學開發(fā)的單點登錄系統(tǒng),使用SSL作為服務器和客戶端的通信協(xié)議,具有可靠的安全性,是理想的單點登錄解決方案.因其配置簡單,技術成熟,客戶端支持廣泛(如Java,Jsp,Php等)在國內外眾多高校、科研機構和大型企業(yè)中都有廣泛應用.
基于J2EE框架開發(fā)的MIS系統(tǒng)都可以通過在Tomcat中部署CAS實現(xiàn)對用戶的身份認證功能.
Yale CAS由CAS Server和CAS Client兩部分構成.CAS Server是單點登錄系統(tǒng)的認證中心,是一個集中所有用戶認證的唯一的服務器,僅負責完成對用戶的認證工作.CAS Server采用Java開發(fā),在認證過程中直接與用戶數(shù)據(jù)庫交互,需要獨立的部署在Tomcat服務器上.CAS Client部署在客戶端即Web應用上,是使用認證中心所提供服務,實現(xiàn)單點登錄的應用系統(tǒng).檢查用戶是否已經(jīng)被授權和重定向的工作都是由部署在Web應用的CAS Client完成.
在分析CAS的工作原理之前,先了解兩個關于SSO單點登錄(single sign-on)的概念:
允許票據(jù)Cookie(Ticket Granting Ticket,TGT):Web瀏覽器在登錄CAS Server成功后,CAS Server頒發(fā)TGT給瀏覽器,表示該用戶已經(jīng)通過認證中心的認證,是登錄應用系統(tǒng)的依據(jù).TGT將同時存儲在CAS服務器端和用戶cookie中.
服務票據(jù)(Service Ticket,ST):由CAS Server根據(jù)TGT分發(fā)給請求的一個服務票據(jù)ST,與瀏覽器請求的Server對應[3]28-30.用于客戶端應用持有,每個ST對應一個用戶在一個客戶端上.
用戶第一次登錄Web應用時,CAS客戶端自動把用戶頁面重定向到CAS服務器,服務器取出用戶cookie中的TGT,檢驗是否在服務器中存在,若存在則生成ST返回給客戶端(若不存在則要求登錄,登錄成功后同樣返回ST給客戶端),客戶端拿到ST后再發(fā)送給CAS服務器認證是否為真實ST,認證成功即表示登錄成功.CAS認證過程如圖1所示.

圖1 CAS基本原理
CAS的認證過程以及消息流分析如下:
1)當瀏覽器要訪問受保護的Web應用時,CAS客戶端會檢查該http請求,以判斷其中有無TGT.
2)該Web應用的CAS客戶端會將用戶的請求重定向到CAS Server即認證中心,并傳遞Service參數(shù),也就是要訪問的目的資源地址,以便在登錄成功之后轉向該地址.
3)用戶認證過程:如果用戶提交的用戶名和密碼不正確,CAS Server會將用戶定向到Login頁面.如果用戶提交了正確的用戶名和密碼,將執(zhí)行兩個操作:向成功登錄的客戶端瀏覽器發(fā)送一個允許票據(jù)cookie(TGC),標志該用戶已經(jīng)經(jīng)過認證;創(chuàng)建一個服務票據(jù)ST并回傳給Web應用,同時CAS Server緩存此ST用于將來驗證使用.之后,系統(tǒng)將重定向至Service所在的地址(即要訪問的受保護資源),并將服務票據(jù)ST作為URL參數(shù)傳遞.CAS會把ST(服務票據(jù))和TGT(經(jīng)過認證的用戶)以及用戶要訪問的Service對應起來.在上述過程中允許票據(jù)cookie(TGC)相當于CAS Server發(fā)送給用戶的通行證,只有用戶持有TGC,且TGT有效,就根據(jù)Server參數(shù)將瀏覽器重定向到受保護的Web應用.如果TGC失效,意味著用戶沒有被認證,用戶將被重定向到登錄頁面重新提交憑證,有CAS Sserver對用戶重新進行認證.
4)CAS Client將服務票據(jù)ST傳送到CAS認證中心去確認.當CAS Servre將CAS Client所持有的ST和自己緩存的ST進行比對,確認無誤后向CAS Client返回該用戶的身份.因為ST是由CAS認證中心生成并比對的,所以,CAS Server的判斷是準確的.發(fā)送ST并比對的過程是由CAS Client直接訪問CAS Servre,沒有經(jīng)過瀏覽器.如果ST不正確,則向CAS Client返回錯誤信息,并提示用戶重新進行認證.
在上述過程中,所有與CAS的交互過程,都采用了SSL協(xié)議,以確保ST和TGC的安全性.
要使用單點登錄功能的Web應用應該作為CAS的一個客戶端來運行.以下內容為在Tomcat中配置CAS的操作.
1)安裝及配置CAS服務器
到耶魯大學的網(wǎng)站下載CAS發(fā)行包,之后安裝CAS服務器端,其端口號是8443.安裝好后,可以通過訪問登錄窗口http://localhost:8080/cas/login,如果能出現(xiàn)登錄頁面就說明CAS服務器安裝是正常的.在訪問登錄窗口時,需要在用戶名和密碼文本框中輸入對應的信息,注意用于測試的密碼和用戶名是相同的.
2)配置Tomcat使用https協(xié)議
① 生成ST.CAS Server生成ST是通過Java自帶的Keytool命令完成的.該ST與瀏覽器所請求的服務相對應.
Keytool-genkey-alias my-alias-name-keyalg RSA-keystore keystore-file
這行命令將通過RSA算法產(chǎn)生一個公私密鑰對,也就是SERVER的證書.
② 在Tomcat的8443端口配置SSL.
3)配置CAS客戶端
在應用系統(tǒng)中配置CAS客戶端(端口號8080).
① 將CAS客戶端文件復制到應用程序的制定位置,并對Filter進行修改;②CAS客戶端進行部署;③導出Server的證書;④ 在客戶端的JVM里導入信任的Server證書.
最后要對配置好的CAS進行測試.
RSA算法是公鑰密碼的代表,其安全性是基于大素數(shù)乘積難分解而設計的.它是第一個既能用于數(shù)據(jù)加密又能用于數(shù)字簽名的算法,易于理解和操作,被認為是目前最優(yōu)秀的公鑰方案之一[4]5-7.RSA是一種非對稱加密算法,該算法需要一對密鑰,使用其中的加密密鑰進行加密,需要用另外一個解密密鑰才能解密.到目前為止,除了大素數(shù)分解之外,還沒有更有效的方法來破譯RSA.RSA在銀行電子貨幣和信用卡、安全的電子郵件、認證、遠程登錄以及Web環(huán)境下的信息安全方面都有廣泛的應用.
基于J2EE開發(fā)的信息管理系統(tǒng)可以直接在Tomcat中配置CAS來實現(xiàn)一次登錄多次訪問,CAS在對用戶進行信息核實的過程中已經(jīng)通過對不同票據(jù)的檢驗實現(xiàn)了對用戶的身份認證,從一定程度上保障了系統(tǒng)安全.后期還可以利用J2EE自帶的一些工具,如Filter來實現(xiàn)對用戶的訪問控制,并結合驗證碼的使用,來進一步提高系統(tǒng)的安全性.
[1]張 奇,鐘觀寶.基于用戶映射的CAS單點登錄系統(tǒng)的設計與實現(xiàn)[J].信息通信技術,2009(4).
[2]楊 穎.職業(yè)技術學院學籍管理系統(tǒng)設計[J].中國長城鋁業(yè)公司職業(yè)技術學院,2011(8).
[3]梁愛南,黃賢明,白春燕.高校學生信息管理系統(tǒng)中工作流的分析[J].企業(yè)科技與發(fā)展,2012(13).
[4]白曉暉.基于CAS理論的學業(yè)評價的設計與實施[D].昆明:云南大學,2011.