一個簡單實際可用的CAS配置日誌

1      目的
撰寫本文的目的是記錄一個簡單、以數據庫爲驗證用戶的單點登陸的CAS配置過程,看過其他文檔,要麼沒有配置過程,要麼過於複雜。配置之前建議先仔細研究下相關的參考文檔,只有明白了相關原理,配置起來其實很簡單。
2      名詞解說
Single Sign On - 通過用戶登錄一次,即可獲得需訪問系統和應用軟件的授權。
Yale CAS - 耶魯大學開發的單點登錄(Single Sign On)系統稱爲CASCentral Authentication Server)被設計成一個獨立的Web應用程序(cas.war)
3      參考
Keytool使用指南:
 
Tomcat-ssl配置指南:
 
Cas文檔:
4      安裝環境
WINXP + JDK1.5 + Tomcat 5.5.30 + CAS Server 3.0.7 + Yale CAS Client 2.1.1
5      配置過程
5.1         安裝和配置Tomcat的SSL
參考以下帖子-Tomcat SSL配置大全:
5.2         配置CAS服務器端
解壓 cas-server-3.0.6.zip,把 /target/cas.war copy 到 %CATALINA_HOME%/webapps/ 下
5.3         配置CAS 客戶端
我們要將tomcatjsp-examples servlets-examples2個應用全部經過SSO的驗證,CAS缺省驗證方式的類是:org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler
這種配置只是用於測試目的,只要用戶名和密碼相同就可以驗證通過了。
5.3.1   配置應用servlets-examples
修改/webapps/servlets-examples/WEB-INF/web.xml

servlet servlet-mapping 中間加上以下設置

xml 代碼
  1. <filter>  
  2.     <filter-name>CASFilterfilter-name>  
  3.     <filter-class>  
  4.         edu.yale.its.tp.cas.client.filter.CASFilter   
  5.     filter-class>  
  6.     <init-param>  
  7.         <param-name>  
  8.             edu.yale.its.tp.cas.client.filter.loginUrl   
  9.         param-name>  
  10.         <param-value>https://localhost:8443/cas/loginparam-value>  
  11.     init-param>  
  12.     <init-param>  
  13.         <param-name>  
  14.             edu.yale.its.tp.cas.client.filter.validateUrl   
  15.         param-name>  
  16.         <param-value>  
  17.             https://localhost:8443/cas/proxyValidate   
  18.         param-value>  
  19.     init-param>  
  20.     <init-param>  
  21.         <param-name>  
  22.             edu.yale.its.tp.cas.client.filter.serverName   
  23.         param-name>  
  24.         <param-value>localhost:8080param-value>  
  25.     init-param>  
  26.     <init-param>  
  27.         <param-name>  
  28.             edu.yale.its.tp.cas.client.filter.serverName2   
  29.         param-name>  
  30.         <param-value>192.168.5.13:8080param-value>  
  31.     init-param>  
  32. filter>  
  33. <filter-mapping>  
  34.     <filter-name>CASFilterfilter-name>  
  35.     <url-pattern>/servlet/*url-pattern>  
  36. filter-mapping>  

 

: edu.yale.its.tp.cas.client.filter.serverName 是表示需要 redirect 的網址如果有1個以上的網址, 則可以一直增加上去注意 param-name 要不一樣
edu.yale.its.tp.cas.client.filter.loginUrl redirect 的網址
 
 

 

5.3.2     配置應用jsp-examples
修改%CATALINA_HOME%/webapps/jsp-examples/WEB-INF/web.xml在 servlet 及 servlet-mapping中間加上以下設置:
xml 代碼
  1. <filter>  
  2.     <filter-name>CASFilterfilter-name>  
  3.     <filter-class>  
  4.         edu.yale.its.tp.cas.client.filter.CASFilter   
  5.     filter-class>  
  6.     <init-param>  
  7.         <param-name>  
  8.             edu.yale.its.tp.cas.client.filter.loginUrl   
  9.         param-name>  
  10.         <param-value>https://localhost:8443/cas/loginparam-value>  
  11.     init-param>  
  12.     <init-param>  
  13.         <param-name>  
  14.             edu.yale.its.tp.cas.client.filter.validateUrl   
  15.         param-name>  
  16.         <param-value>  
  17.             https://localhost:8443/cas/proxyValidate   
  18.         param-value>  
  19.     init-param>  
  20.     <init-param>  
  21.         <param-name>  
  22.             edu.yale.its.tp.cas.client.filter.serverName   
  23.         param-name>  
  24.         <param-value>localhost:8080param-value>  
  25.     init-param>  
  26.     <init-param>  
  27.         <param-name>  
  28.             edu.yale.its.tp.cas.client.filter.serverName2   
  29.         param-name>  
  30.         <param-value>192.168.5.13:8080param-value>  
  31.     init-param>  
  32. filter>  
  33. <filter-mapping>  
  34.     <filter-name>CASFilterfilter-name>  
  35.     <url-pattern>/*url-pattern>  
  36. filter-mapping>  

 

: jsp-examples servlets-examples 基本上大同小異唯一不一樣就是 filter-mapping url-patternjsp-examples /*servlets-examples /servlet/*
 
5.3.3   設置需要用到的cas-client庫
將casclient-2.1.1.zip改名爲casclient-2.1.1.jar, copy jsp-examples servlets-exampleslib
 
5.4   測試配置
啓動tomcat,訪問如下地址:
 
這時,系統會提示你將要訪問的是加密網站,並問你接受該網站提供的證書,點接受後,將顯示CAS單點登陸頁面,地址變成如下:
 
輸入任意的用戶名,密碼和用戶名相同就可以進入剛纔要訪問的頁面。
這時再訪問servlets-examples 應用下面的任一個servlet,如:
 
訪問後,你會發現地址欄的地址變爲:
 
後面增加了?ticket=ST-3-6EuKFN4M2aLj9cVup6sABykzheEnAnY3Zmb-20,這就是CAS的ticket(票據)
剛纔我們其實配置了2個應用都是需要驗證用戶的,如果用戶先訪問servlets-examples應用下面的servlet,同樣會提示登陸,再訪問jsp-examples,也不會提示登陸了,說明我們的單點登陸配置成功。
5.5         配置CAS通過數據庫驗證用戶
CAS缺省配置只是用於測試目的,實際應用中,通過數據庫進行驗證用戶最爲常見,所以,我們現在測試通過數據庫驗證用戶。先停止tomcat.
5.5.1   創建數據庫表
我們測試使用的是oracle數據庫,可以選用任何一個支持JDBC的數據庫。用scott/tiger登陸sqlplus,輸入如下語句創建用戶表和輸入測試數據:
create table app_user(username varchar(100), password varchar(100));
insert into app_user values('tomcat', 'tomcat');
insert into app_user values('cas', 'cas');
commit;
 
5.5.2   修改CAS 服務器端配置
修改%CATALINA_HOME%/webapps/cas/WEB-INF/ deployerConfigContext.xm把以下的程序代碼屏蔽掉:
xml 代碼
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />  

 在同一地方加上以下程序代碼:

xml 代碼
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">   <property name="sql" value="select password from app_user where username=?" />   <property name="dataSource" ref="dataSource" />   bean>  

 定義 dataSource bean,注意,配置的地方應該在之前,不要放錯了位置,不是和以上驗證bean放在一起。

xml 代碼
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">   <property name="driverClassName"><value>oracle.jdbc.driver.OracleDrivervalue>property>   <property name="url"><value>jdbc:oracle:thin:@127.0.0.1:1521:oracle9ivalue>property>   <property name="username"><value>scottvalue>property>   <property name="password"><value>tigervalue>property>   bean>  

 

5.5.3   添加CAS 服務器需要用到的jar
把 cas-server-3.0.6.zip裏的 /target/cas-server-jdbc-3.0.6.jar copy 到%CATALINA_HOME%/webapps/cas/WEB-INF/lib下。
 
把 Oracle jdbc jar即ojdbc14.jar copy到%CATALINA_HOME%/webapps/cas/WEB-INF/lib下。
 
5.5.4  再次測試

啓動tomcsat,重複剛纔的測試,哈哈,輸入tomcat/tomcat,可以了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章