本文文件夾:
- 概述
- 演示環境
- 部署CAS-Server相關的Tomcat
- 部署CAS-Client相關的Tomcat
- 測試驗證SSO
第一:
本demo在一個機器上實現(三個虛擬主機),來看SSO單點登錄實例(我們能夠布到多個機器上使用都是同一個道理的),一個server主機,和兩個client虛擬主機
<span style="font-size:18px;"># 127.0.0.1 localhost # ::1 localhost 127.0.0.1 localhost 127.0.0.1 www.bbs.itcast.cn 127.0.0.1 www.news.itcast.cn 127.0.0.1 www.news.com 127.0.0.1 www.bbs.com 127.0.0.1 www.server.com </span></span></span>
第二:在tomcat的根文件夾下。分別建立三個文件夾,即server、bbs、news。
在三個文件夾下,分別都建立一個ROOT(ROOT是tomcat的主默認主頁文件夾)文件夾。
將cas-server.xx.war解壓后散放到/tomcat/server/ROOT文件夾下。
例如以下圖:
注意文件夾結構,是散放到ROOT的文件夾下。
第三步:先測試server能否夠正常使用
啟動tomcat,在地址欄輸入:
http://www.server.com:8080(由於我沒有改動port默認值)

請先保證在單個server上登錄能夠登錄成功。
假設不能登錄成功,請反復前面的配置。
第四步:配置兩個client
將下載的文件mywebapp.war分別解壓到tomcat/bbs/ROOT文件夾下和tomcat/news/ROOT文件夾下。注意是散放到ROOT文件夾下。
因為在mywebapp.war中並沒有放置依賴的jar文件。所以,還須要我們加入它所依賴的jar文件,為此我為大家准備了已經放放置好的
mywebapp.war文件。
放置好的文件夾結構例如以下:

WEB-INF/lib文件夾下的包例如以下:
cas-client-core-3.2.1.jarcommons-logging-1.1.jar
這兩個包,在cas-client.rar文件里都能夠找到。
此處,你能夠啟動一個tomcat。假設啟動成功。則進入下一步。
第五步:改動client的配置文件
當使用登錄client受保護的資源時,假設發現還沒有登錄。則會重定向到server(售票處)請求登錄驗證,登錄成功后即會獲取一張票據,server會攜帶這張票據再重定向到client頁面。
改動client的web.xml配置文件,讓它在登錄時,知道去哪台server:
注意將里面的https所有改動成http。
改動的部分主要分為兩塊:
1:改動登錄重定向過慮器,它用於保護受保護的資源,假設發面用戶在訪問受保護的資源時。用戶還沒有登錄。則會重定向到server,要求用戶登錄:
<span style="font-size:18px;"><filter> <!--配置登錄過濾器。注意負責在登錄時重定到服務器頁面--> <filter-name>CAS Authentication Filter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <!--到服務器地址,注意后面的/login--> <param-name>casServerLoginUrl</param-name> <param-value>http://www.server.com:8080/login</param-value> </init-param> <init-param> <!--本程序所在的URL--> <param-name>serverName</param-name> <param-value>http://www.news.com:8080</param-value> </init-param> <init-param> <param-name>renew</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>gateway</param-name> <param-value>false</param-value> </init-param> </filter></span>
第六步:測試登錄
眼下還不能實現單點登錄。
但能夠對隨意的一個client進行登錄驗證。
1、 在地址欄輸入
點擊訪問受保護的頁面:got to protected area
將重定向到server請求登錄:
登錄成功后即重定回原請求頁面:
第七步:配置能夠單點登錄
Casserver都是用spring配置文件配置而成。且使用了cookie技術。在ticketGrantingTicketCookieGenerator.xml文件里,保存了cookie的生成方式及有效時間。
注意,這是在server服務器上的spring配置文件。
打開此文件。改動成下面內容:
<span style="font-size:18px;"><bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator" p:cookieSecure="false" p:cookieMaxAge="3600" p:cookieName="mycas" p:cookiePath="/" /></span>
說明:false是指支持http協議登錄。默覺得true,支持https登錄。
3600中cookie保存在本地的時間。默覺得-1即瀏覽器緩存。
cookiePath是cookie的path設置。
第八步:單點登錄測試
改動了上面文件后,就可以測試能否夠從一個點的登錄,即能夠訪問兩個站點時都顯示先登錄的姓名:
在地址欄直接輸入:www.bbs.com:8080
能夠看到,顯示的是newsusername。即之前在www.news.com上登錄的username,即實現單點登錄。
好了,以上步驟,完畢。假設能夠配置成功。再進入下一步。
總結
以上都是在建立在SSO的war下實現的單點登錄的效果,最簡單的效果。最簡單的入門操作,
在CAS的主頁上,能夠看到CASserver,和client配置的完整過程,依據提示,全然能夠配置成功server和client。
同一時候,在CAS上也能夠找到server端的程序和client的程序。都是已經配置好的,對於初步學習來說。全然能夠直接取來配置測試。以上就是直接使用CAS官方提供的演示樣例server和演示樣例client配置一個單點登錄的演示樣例!
下篇在Eclipse環境中開發SSO