火龍果軟件-cas單點(diǎn)系統(tǒng)的部署_第1頁
火龍果軟件-cas單點(diǎn)系統(tǒng)的部署_第2頁
火龍果軟件-cas單點(diǎn)系統(tǒng)的部署_第3頁
火龍果軟件-cas單點(diǎn)系統(tǒng)的部署_第4頁
火龍果軟件-cas單點(diǎn)系統(tǒng)的部署_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、一. SSO (Single Sign-on)原理SSO 分為Web-SSO和桌面SSO。桌面 SSO 體現(xiàn)在操作系統(tǒng)級別上。Web-SSO體現(xiàn)在客戶端,主要特點(diǎn)是: SSO 應(yīng)用之間使用 Web 協(xié)議 ( 如 HTTPS) ,并且只有一個(gè)登錄入口。我們所講的SSO,指 Web SSO 。SSO 的體系中,有下面三種角色: User(多個(gè)) Web應(yīng)用(多個(gè)) SSO認(rèn)證中心(一個(gè))SSO 實(shí)現(xiàn)模式千奇百怪,但萬變不離其宗,包含以下三個(gè)原則:l 所有的登錄都在 SSO 認(rèn)證中心進(jìn)行。l SSO 認(rèn)證中心通過一些方法來告訴 Web 應(yīng)用當(dāng)前訪問用戶究竟是不是通過認(rèn)證的用戶。l SSO 認(rèn)證中心和

2、所有的 Web 應(yīng)用建立一種信任關(guān)系。二. CAS 的基本原理CAS(Central Authentication Service) 是 Yale 大學(xué)發(fā)起的構(gòu)建 Web SSO 的 Java開源項(xiàng)目。1. CAS 的結(jié)構(gòu)體系u CAS ServerCAS Server 負(fù)責(zé)完成對用戶信息的認(rèn)證,需要單獨(dú)部署,CAS Server 會(huì)處理用戶名 / 密碼等憑證 (Credentials) 。u CAS ClientCAS Client部署在客戶端,當(dāng)有對本地 Web 應(yīng)用受保護(hù)資源的訪問請求,并且需要對請求方進(jìn)行身份認(rèn)證,重定向到 CAS Server 進(jìn)行認(rèn)證。2. CAS 協(xié)議基礎(chǔ)協(xié)議上圖

3、是一個(gè)基礎(chǔ)的 CAS 協(xié)議, CAS Client 以 過濾器的方式保護(hù) Web 應(yīng)用的受保護(hù)資源,過濾從客戶端過來的每一個(gè) Web 請求,同時(shí), CAS Client 會(huì)分析 HTTP 請求中是否包請求 Service Ticket( 上圖中的 Ticket) ,如果沒有,則說明該用戶是沒有經(jīng)過認(rèn)證的, CAS Client 會(huì)重定向用戶請求到 CAS Server ( Step 2 )。 Step 3 是用戶認(rèn)證過程,如果用戶提供了正確的認(rèn)證信息 , CAS Server 會(huì)產(chǎn)生一個(gè)隨機(jī)的 Service Ticket ,會(huì)向 User 發(fā)送一個(gè) Ticket granting cooki

4、e (TGC) 給 User 的瀏覽器,并且重定向用戶到 CAS Client (附帶剛才產(chǎn)生的 Service Ticket),Step 5 和 Step6 是 CAS Client 和 CAS Server 之間完成了一個(gè)對用戶的身份核實(shí),用 Ticket 查到 Username ,認(rèn)證通過。3. CAS 如何實(shí)現(xiàn) SSO當(dāng)用戶訪問Helloservice2再次被重定向到 CAS Server 的時(shí)候, CAS Server 會(huì)主動(dòng)獲到這個(gè) TGC cookie ,然后做下面的事情:1) 如果 User 的持有 TGC 且其還沒失效,那么就走基礎(chǔ)協(xié)議圖的 Step4 ,達(dá)到了 SSO 的效

5、果。2) 如果 TGC 失效,那么用戶還是要重新認(rèn)證 ( 走基礎(chǔ)協(xié)議圖的 Step3) 。三. 實(shí)踐配置下面我們以tomcat 5.5 為例進(jìn)行說明(這里,我將Server和Client同時(shí)放在了同一個(gè)Tomcat服務(wù)器下)。軟件環(huán)境:tomcat 5.5 ant-1.6.5, jdk1.5.0_06下載cas-server-3.0.4.zip和cas-client和cas-server-jdbc-3.0.5-rc2.jar和mysql 5.0.16和tomcat 5.5.15 /downloads/cas/cas-server-3.0.4.zip ht

6、tp://tp/cas/cas-client-2.0.11.zip/maven/cas/jars/cas-server-jdbc-3.0.5-rc2.jar/(一) 將一個(gè)或者一些頁面進(jìn)行支持HTTPS傳輸協(xié)議(意義:對某些頁面進(jìn)行了安全傳輸)(重點(diǎn)掌握)1. 產(chǎn)生SERVER的證書庫文件keytool -genkey -alias tomcat -keyalg RSA -keystore keystore-file并將證書文件放在web容器的目錄下。2. (在server

7、端)配置tomcat使用HTTPS$CATALINA_HOME/conf/server.xml里 注意:keystorePass=changeit(這個(gè)問證書庫文件的密碼,也就是上面配置產(chǎn)生的一個(gè)密碼) keystoreFile=/.keystore(這是證書庫文件的存放路徑,其中根目錄“/”為tomcat的安裝路徑)3. 在WEB-INFweb.xml文件中增加 SSL /jsp2/el/* CONFIDENTIAL 解釋:transport-guarantee元素指定了客戶端和服務(wù)端的通信關(guān)系,有NONE,INTEGRAL,CONFIDENTIAL。NONE表示著應(yīng)用不需要任何傳輸保障。I

8、NTEGRAL表示著在數(shù)據(jù)在客戶端到服務(wù)端的過程中不能有任何改變。CONFIDENTIAL表示在傳輸過程中防止其他傳輸內(nèi)容的干擾。在使用SSl時(shí)常用的就INTEGRAL或CONFIDENTIL。4. 進(jìn)行訪問測試(二) 實(shí)現(xiàn)CAS系統(tǒng)1. 產(chǎn)生SERVER的證書庫文件keytool -genkey -alias tomcat -keyalg RSA -keystore keystore-file并將證書文件放在web容器的目錄下。2. (在server端)配置tomcat使用HTTPS$CATALINA_HOME/conf/server.xml里 注意:keystorePass=changei

9、t(這個(gè)問證書庫文件的密碼,也就是上面配置產(chǎn)生的一個(gè)密碼) keystoreFile=/.keystore(這是證書庫文件的存放路徑,其中根目錄“/”為tomcat的安裝路徑)3. 將cas-server-3.0.4.zip解壓,并將target/cas.war拷貝到webapps下。4. 將cas-client-2.0.11.zip解壓,把cas-client-2.0.11javalibcasclient.jar拷貝到client服務(wù)器上(這里為同一tomcat)的書生讀吧wnL;G&m0,w giF9pwebapps/servlets-examples/WEB-INF/lib目錄下(如果沒

10、有就建一個(gè))5. 在要使用CAS的客戶端應(yīng)用里設(shè)置(以servlets-examples這個(gè)APP為例,在應(yīng)用時(shí),所有客戶端均進(jìn)行類似配置),我們使用ServletFilter(CAS client里提供的)來實(shí)現(xiàn)SSO的檢查。修改servlets-examples/WEB-INF/web.xmlCASFilteredu.yale.its.tp.cas.client.filter.CASFilteredu.yale.its.tp.cas.client.filter.loginUrl:port/cas/loginedu.yale.its.tp

11、.cas.client.filter.validateUrl:port /cas/proxyValidateedu.yale.its.tp.cas.client.filter.serverN:port CASFilter/servlet/*配置好的例子:CASFilteredu.yale.its.tp.cas.client.filter.CASFilter edu.yale.its.tp.cas.client.filter.loginUrl https:/localhost:8443/ca

12、s/login edu.yale.its.tp.cas.client.filter.validateUrl https:/localhost:8443/cas/proxyValidate edu.yale.its.tp.cas.client.filter.serverName localhost:8080 CASFilter /* 6. 7.導(dǎo)出SERVER端的的證書文件(證書文件只包含公鑰)書生讀吧*S-Ekeytool -export -file myserver.crt -alias my-alias-name -keystore keystore-file/ keytool -expo

13、rt -file myserver.crt -alias tomcat -keystore .keystore /Z0ts) o0書生讀吧vwl;TU9Q& J2DS a7. 在客戶端的JVM里的證書庫cacerts中導(dǎo)入信任的SERVER的證書(根據(jù)情況有可能需要管理員權(quán)限)8yt*!O1Ys0keytool -import -keystore cacerts -file myserver.crt -alias hostname(別名)然后將cacerts 復(fù)制到%JAVA_HOME%/jre/lib/security/目錄下/keytool -import -keystore cacert

14、s -file myserver.crt -alias tomcat書生讀吧 n *Dy0t F!I|書生讀吧mZ4cG 5E)RZ/i n8. 測試.書生讀吧!LmAtAB a(rn把server和client分別起來(這里為同一個(gè)Tomcat,實(shí)際應(yīng)用時(shí)可以在多個(gè)服務(wù)器上,且client可以為多個(gè)應(yīng)用),檢查啟動(dòng)的LOG是否正常,如果一切OK,就訪問Q*R:Nu.5rJYio9x0http:/localhost:8080/servlets-examples/servlet/HelloWorldExamplek7YBe:z:_g0系統(tǒng)會(huì)自動(dòng)跳轉(zhuǎn)到一個(gè)驗(yàn)證頁面,隨便輸入一個(gè)相同的賬號,密碼,驗(yàn)

15、正通過之后就會(huì)訪問T h1|8Yka$G6q k0到真正的HelloWorldExample這個(gè)servlet了四. 結(jié)合實(shí)際的環(huán)境的擴(kuò)展1 多個(gè)web應(yīng)用如何實(shí)現(xiàn)單點(diǎn)登陸(!大家思考一下:如果我想在配置一個(gè)客戶端,需要什么步驟?)下面以jsp-examples為例子,進(jìn)行下面得闡述:(1)在webappsjsp-examplesWEB-INFweb.xml文件中進(jìn)行配置: CASFilter edu.yale.its.tp.cas.client.filter.CASFilter edu.yale.its.tp.cas.client.filter.loginUrl https:/localho

16、st:8443/cas/login edu.yale.its.tp.cas.client.filter.validateUrl https:/localhost:8443/cas/proxyValidate edu.yale.its.tp.cas.client.filter.serverName localhost:8080 CASFilter /jsp2/simpletag/* (2)在webappsjsp-examplesWEB-INFlib增加引用得jar包,casclient.jar。2 認(rèn)證業(yè)務(wù)方法的擴(kuò)展:2.1.1 配置CAS使用數(shù)據(jù)庫進(jìn)行驗(yàn)證在MySql中的Test庫中新建use

17、r表CreateTABLEapp_user(usernamevarchar(30)NOTNULLdefault,passwordvarchar(45)NOTNULLdefault,PRIMARYKEY(username)ENGINE=InnoDBDEFAULTCHARSET=utf8;添加以下用戶:InsertINTOapp_user(username,password)VALUES(test, test ),( test 1, test 1);2.1.2 修改cas項(xiàng)目中的deployerConfigContext.xml文件注釋掉該行,在其下加入:并添加一個(gè)bean: com.mysql.

18、jdbc.Driver jdbc:mysql:/localhost:3306/test root root 2.1.3 拷貝cas-server-jdbc-3.0.6.jar和mysql-connector-java-3.1.11-bin.jar到webapps/cas/WEB-INF/lib下。 3 如何在這取得用戶名稱當(dāng)前得登陸用戶:4 登陸頁面的擴(kuò)展:(1) 現(xiàn)在CAS系統(tǒng)中存在的兩套登陸頁面project.home/webapp/WEB-INF/view/jsp/default/ui/和project.home/webapp/WEB-INF/view/jsp/simple/ui (2)

19、 project.home/webapp/WEB-INF/cas-servlet.xml 這個(gè)bean中basename屬性決定由哪個(gè)屬性文件加載,simple_views. properties還是default_views. Properties而屬性文件:project.home/webapp/WEB-INF/classes/default_perties project.home/webapp/WEB-INF/classes/simple_perties# Login view (/login)casLoginView.(class)=org.spr

20、ingframework.web.servlet.view.JstlViewcasLoginView.url=/WEB-INF/view/jsp/default/ui/casLoginView.jsp(登陸頁面)# Login confirmation view (logged in, warn=true)casLoginConfirmView.(class)=org.springframework.web.servlet.view.JstlViewcasLoginConfirmView.url=/WEB-INF/view/jsp/default/ui/casConfirmView.jsp(當(dāng)

21、選擇“警告”按鈕時(shí),系統(tǒng)顯示的頁面)# Logged-in view (logged in, no service provided)casLoginGenericSuccessView.(class)=org.springframework.web.servlet.view.JstlViewcasLoginGenericSuccessView.url=/WEB-INF/view/jsp/default/ui/casGenericSuccess.jsp(成功登陸頁面)每個(gè)屬性文件決定具體加載頁面的名稱。 五. CAS 安全性u TGC/PGT 安全性TGC 也有自己的存活周期。下面是 CAS

22、的 applicationContext.xml 中,通過 TimeoutExpirationPolicy來設(shè)置 CAS TGC 存活周期的參數(shù),參數(shù)默認(rèn)是 120 分鐘,在合適的范圍內(nèi)設(shè)置最小值,太短,會(huì)影響 SSO 體驗(yàn),太長,會(huì)增加安全性風(fēng)險(xiǎn)。 /單位為:毫秒u Service Ticket/Proxy Ticket 安全性設(shè)用戶拿到 Service Ticket 之后,他請求 helloservice 的過程又被中斷了, Service Ticket 就被空置了,事實(shí)上,此時(shí), Service Ticket 仍然有效。 CAS 規(guī)定 Service Ticket 只能存活一定的時(shí)間,然

23、后 CAS Server 會(huì)讓它失效。通過在 applicationContext.xml 中配置下面的參數(shù),可以讓 Service Ticket 在訪問多少次或者多少秒內(nèi)失效。 /單位:毫秒 該參數(shù)在業(yè)務(wù)應(yīng)用的條件范圍內(nèi),越小越安全。附錄一 名稱解釋CAS(Central Authentication Service) TGT(Ticket Granting Ticket) ST(Service Ticket) PGT(Proxy Granting Ticket)Ticket Granting Cookie (簡稱TGC)Service Ticket(簡稱ST)附錄二 Keytool的介紹k

24、eytool JAVA是個(gè)密鑰和證書管理工具。它使用戶能夠管理自己的公鑰/私鑰對及相關(guān)證書,用于(通過數(shù)字簽名)自我認(rèn)證(用戶向別的用戶/服務(wù)認(rèn)證自己)或數(shù)據(jù)完整性以及認(rèn)證服務(wù)。它還允許用戶儲(chǔ)存他們的通信對等者的公鑰(以證書形式)。通過keytool help查看其用法,詳細(xì)信息可以參考 創(chuàng)建證書Java 中的 keytool.exe (位于 JDK/Bin 目錄下)可以用來創(chuàng)建數(shù)字證書,所有的數(shù)字證書是以一條一條(采用別名區(qū)別)的形式存入證書庫的中,證書庫中的一條證書包含該條證書的私鑰,公鑰和對應(yīng)的數(shù)字證書的信息。證書庫中的一條證書可以導(dǎo)出數(shù)字證書文件,數(shù)字證書文件只包括主體信息和對應(yīng)的公鑰

25、。每一個(gè)證書庫是一個(gè)文件組成,它有訪問密碼,在首次創(chuàng)建時(shí),它會(huì)自動(dòng)生成證書庫,并要求指定訪問證書庫的密碼。在創(chuàng)建證書的的時(shí)候,需要填寫證書的一些信息和證書對應(yīng)的私鑰密碼。這些信息包括 CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx,它們的意思是: CN(Common Name - 名字與姓氏):其實(shí)這個(gè)“名字與姓氏”應(yīng)該是域名,比如說localhost或是之類的。輸成了姓名,和真正運(yùn)行的時(shí)候域名不符,會(huì)出問題。瀏覽器訪問時(shí),彈出一個(gè)對話框,提示“安全證書上的名稱無效,或者與站點(diǎn)名稱不匹配”,用戶選擇繼續(xù)還是可以瀏覽網(wǎng)頁。但是用http client寫程序訪問的時(shí)候,會(huì)拋出類似

26、于“javax.servlet.ServletException: HTTPS hostname wrong: should be ”的異常。 OU(Organization Unit - 組織單位名稱) O(Organization - 組織名稱) L(Locality - 城市或區(qū)域名稱) ST(State - 州或省份名稱) C(Country - 國家名稱)可以采用交互式讓工具提示輸入以上信息,也可以采用參數(shù),如:-dname “CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx”來自動(dòng)創(chuàng)建。u 創(chuàng)建一個(gè)證書指定證書庫為 D:/keystore/test,創(chuàng)建別名為 To

27、mcat 的一條證書,它指定用 RSA 算法生成,且指定密鑰長度為 1024,證書有效期為 1 年:keytool -genkey -alias Tomcat -keyalg RSA -keysize 1024 -keystore C:/keystore/test -validity 365顯示證書庫中的證書使用如下命令: keytool -list -keystore C:/keystore/test 將顯示 C:/keystore/test 證書庫的的所有證書列表u 導(dǎo)出到證書文件使用命令:keytool -export -alias Tomcat -file C:/keystore/TC

28、.cer -keystore C:/keystore/test 將把證書庫C:/keystore/test 中的別名為 Tomcat 的證書導(dǎo)出到 TC.cer 證書文件中,它包含證書主體的信息及證書的公鑰,不包括私鑰,可以公開。導(dǎo)出的證書文件是以二進(jìn)制編碼文件,無法用文本編輯器正確顯示,可以加上 -rfc參數(shù)以一種可打印的編者編碼輸出。 如:keytool -export -alias Tomcat -file C:/keystore/TC.cer -keystore C:/keystore/test rfcu 查看證書的信息通過命令: keytool -printcert -file D:

29、/keystore/TC.cer 可以查看證書文件的信息。 也可以在 Windows 資源管理器中雙擊產(chǎn)生的證書文件直接查看。u 刪除密鑰庫中的條目keytool -delete -alias Tomcat -keystore C:/keystore/test這條命令將 C:/keystore/test 庫中的 Tomcat 這一條證書刪除了。u 修改證書條目口令keytool -keypasswd -alias Tomcat -keystore C:/keystore/test,可以以交互的方式修改 C:/keystore/test 證書庫中的條目為 Tomcat 的證書。Keytool -

30、keypasswd -alias Tomcat -keypass oldpasswd -new newpasswd -storepass storepasswd -keystore C:/keystore/test 這一行命令以非交互式的方式修改庫中別名為 Tomcat 的證書的密碼為新密碼 newpasswd,行中的 oldpasswd 是指該條證書的原密碼, storepasswd 是指證書庫的密碼。附錄三 HTTPS和SSL的介紹HTTPS(Secure Hypertext Transfer Protocol)安全超文本傳輸協(xié)議 它是由Netscape開發(fā)并內(nèi)置于其瀏覽器中,用于對數(shù)據(jù)進(jìn)

31、行壓縮和解壓操作,并返回網(wǎng)絡(luò)上傳送回的結(jié)果。HTTPS實(shí)際上應(yīng)用了Netscape的完全套接字層(SSL)作為HTTP應(yīng)用層的子層。(HTTPS使用端口443,而不是象HTTP那樣使用端口80來和TCP/IP進(jìn)行通信。)1 SSL(Server Socket Layer) 簡介 在網(wǎng)絡(luò)上信息在源 - 宿的傳遞過程中會(huì)經(jīng)過其它的計(jì)算機(jī)。一般情況下,中間的計(jì)算機(jī)不會(huì)監(jiān)聽路過的信息。但在使用網(wǎng)上銀行或者進(jìn)行信用卡交易的時(shí)候有可能被監(jiān)視,從而導(dǎo)致個(gè)人隱私的泄露。由于 Internet 和 Intranet 體系結(jié)構(gòu)的原因,總有某些人能夠讀取并替換用戶發(fā)出的信息。隨著網(wǎng)上支付的不斷發(fā)展,人們對信息安全的要求越來越高。因此 Netscape 公司提出了 SSL 協(xié)議,旨在達(dá)到在開放網(wǎng)絡(luò) (Internet) 上安全保密地傳輸信息的目的,這種協(xié)議在 WEB 上

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論