姚文權

摘 要:隨著信息化發展,越來越多的應用系統應運而生。若用戶每使用一個系統都登錄一次,就會給用戶帶來諸多不便,單點登錄機制能很好地解決這一問題。用戶只需要認證一次,無需重復登錄,實現統一管理和應用系統間的無縫連接。基于此,文章對開源技術的CAS實現單點登錄的原理進行了介紹,并介紹在Tomcat中部署CAS配置的方法。
關鍵詞:統一身份認證;單點登錄;SSO;CAS
中圖分類號: TP399 文獻標識碼:A 文章編號:1006-8937(2015)24-0082-01
1 背景概述
隨著計算機技術的不斷發展與進步,基于B/S(瀏覽器/服務器)結構的企業應用軟件應用更加的廣泛,現在很多企業生產管理活動都在應用企業應用軟件系統。而企業應用軟件系統都不相關,相互獨立,因此具有不同的身份驗證標準,在不同的頁面分散登錄與分散管理。因此這就導致企業工作人員在每個應用軟件系統頻繁登陸與注銷,這就嚴重影響工作的效率。若采用基于統一身份認證技術單點登錄(Single Sign On ,簡稱SSO),就可以避免頻繁地登錄與注銷各個頁面系統,提高工作效率。所以企業應當采用統一的身份認證系統,這樣一方面保證用戶操作方便,另一方面還可以保證應用系統的安全。
2 CAS 原理和協議
2.1 CAS訪問流程的步驟
從結構上看,CAS 涵蓋了CAS Server和CAS Client兩個部分:需要獨立部署,CAS Server主要是對用戶的認證工作進行負責;CAS Client主要是對客戶端受保護資源的訪問請求進行負責,需要登錄時,需向CAS Serve重新定向。CAS 訪問流程,如圖1所示,主要有以下步驟:
①訪問服務:用戶通過客戶端瀏覽器發送請求,訪問應用系統提供的服務資源。
②重定向認證:CAS 客戶端收到用戶請求后,重定向用戶請求到CAS服務器。
③用戶認證:用戶輸入信息進行身份認證。
④發放票據:CAS 服務器會產生一個隨機Service Ticket。
⑤驗證票據:CAS 服務器驗證票據Service Ticket的合法性,驗證通過后,允許用戶訪問服務。
⑥傳輸用戶信息:CAS 服務器驗證票據通過后,傳輸用戶認證結果信息給用戶。
2.2 CAS最基本的協議過程
下面是 CAS 最基本的協議過程:
和CAS Client 安放在一起的是受保護的客戶端應用系統,利用 Filter請求進行過濾方式。若受保護的資源被每個 Web 請求訪問,則CAS Client 就會對該請求進行立即分析,對Http請求中是否包含Service Ticket進行查看,并將請求向CAS Server登錄地址發送,并且將Service傳遞(也就是要訪問的目的資源地址),而一旦登陸成功,則可向該地址轉回。
用戶則在第3步中將認證信息輸入,CAS Server就會隨機將一個字符數生成,Service Ticket是不可再造的、唯一的,為了將來驗證需要進行延緩,之后對Service所在的地址,系統自動重新登陸,并將一個Ticket Granted Cookie配置到客戶端瀏覽器配置,在拿到Service和新生成的Ticket 之后,CAS Client 在第5、6步中與 CAS Server 進行身份驗證,對Service Ticket的正確性提供保障。全部與CAS的交互在這個協議中,都利用SSL協議,進而對ST和TGC的安全性提供保障。
在工作過程中,該協議將兩次重新回到Service所在的地址,驗證用戶能夠見到CAS Client與CAS Server之間進行Ticket驗證的過程。
3 基于Tomact下的CAS系統搭建流程
3.1 環 境
選擇軟件版本:Tomcat7.0.32+JDK1.6.0_37
+cas-server-3.5.1+cas-client-3.2.1
3.2 生成證書
生成證書的步驟如下:
①生成服務器端證書文件,keytool genkey alias server keyalg RSA keystore serverkey。
②將服務器證書導出為證書文件,keytool export file server.crt alias server keystore serverkey。
③為客戶端JVM導入證書,keytool impor tkeystore% java_home%\jre\lib\cacerts file server.crt alias server。
④將證書應用到Web服務器Tomcat在tomcat目錄下找到得server.xml文件,添加如下:="150"minSpareThreads="25"maxSpareThreads="75"
enableLookups=false"disableUploadTimeout
="true"acceptCount="100" ;
scheme="https"secure="true"clientAuth
="false"sslProtocol="TLS" ;
keystoreFile="/server.keystore"keystorePass="changeit"/>。
3.3 部署CAS server
基于Java實現的CAS Server服務,該服務要Java Web Application單獨配置在與servlet兼容的Web服務器上,同時配置CAS Server的服務器能滿足SSL協議。只有當SSL配置成功,則服務器上配置的CAS Server才能正常運行。在Tomcat的Webapps目錄中存放cas-server-webapp-3.2.1.war,并重新命名為cas.war,然后將tomcat,重新啟動,再對https://localhost:8443/cas進行訪問,之后若出現正常的CAS登錄頁面,則表示CAS Server已經配置成功。
CAS Server部署成功后,只是一個缺省的實現,可以需要根據實際概況做擴展和定制,最主要的是對(Authentication)接口和CAS Server的界面進行擴展,由于篇幅,在此不再贅述。
3.4 CAS客戶端部署
在客戶端的JVM導入信任的SERVER的證書,然后將CAS server中target目錄中的CAS.war 復制到%tomcat_home%\webapps目錄下,并將cas-client\java\lib文件復制到應用程序目錄WEB-INF\lib中在客戶端項目的web.xml配置過濾器。
4 結 語
企業應用軟件系統都不相關,相互獨立,因此具有不同的身份驗證標準,在不同的頁面分散登錄與分散管理。因此這就導致企業工作人員在每個應用軟件系統頻繁登陸與注銷,這就嚴重影響工作的效率。若采用基于統一身份認證技術單點登錄(Single Sign On ,簡稱SSO),就可以避免頻繁地登錄與注銷各個頁面系統,提高工作效率。所以企業應當采用統一的身份認證系統,這樣一方面保證用戶操作方便,另一方面還可以保證應用系統的安全。
參考文獻:
[1] 袁先珍.基于CAS單點登錄系統的研究與實現[J].電腦與電信,2008,(4).
[2] 裴華艷,王煥民.基于CAS的單點登錄平臺的研究與實現[J].電腦知識與技術,2014,(3).