SSO 基於CAS實現單點登錄 實例解析(二)


本文文件夾:

  • 概述
  • 演示環境
  • 部署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默認值)


username與password同樣就能夠登錄,默認



請先保證在單個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.jar

commons-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、 在地址欄輸入

http://www.news.com:8080

點擊訪問受保護的頁面: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設置。

第八步:單點登錄測試

       改動了上面文件后,就可以測試能否夠從一個點的登錄,即能夠訪問兩個站點時都顯示先登錄的姓名:

       先輸入http://www.news.com:8080


在地址欄直接輸入:www.bbs.com:8080



能夠看到,顯示的是newsusername。即之前在www.news.com上登錄的username,即實現單點登錄。


好了,以上步驟,完畢。假設能夠配置成功。再進入下一步。


總結

        以上都是在建立在SSO的war下實現的單點登錄的效果,最簡單的效果。最簡單的入門操作,

在CAS的主頁上,能夠看到CASserver,和client配置的完整過程,依據提示,全然能夠配置成功server和client。

同一時候,在CAS上也能夠找到server端的程序和client的程序。都是已經配置好的,對於初步學習來說。全然能夠直接取來配置測試。以上就是直接使用CAS官方提供的演示樣例server和演示樣例client配置一個單點登錄的演示樣例!



下篇在Eclipse環境中開發SSO



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM