速動畫教程第二十九集
單點登錄CAS的使用方法
下載地址: http://www.oksonic.cn
一.環境
a) Windows 2003 sp1
b) JDK
c) Tomcat
d) MySql5.0
二.準備
a) cas-server-
b) cas-client-java-
c) 安裝完jdk和jre后,需要配置JAVA_HOME和PATH=%JAVA_HOME%\bin
三.步驟
a) 配置Tomcat使用SSL安全認證
i. 使用命令提示符進入到Tomcat安裝目錄
ii. 生成服務端密匙,執行以下命令
keytool -genkey -alias 別名keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore
例:keytool -genkey -alias casserver -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore
運行后出現提示信息:
輸入keystore密碼:changeit 這里也填入主機名
您的名字與姓氏是什么?
[Unknown]: localhost 這里一定要填寫正確的主機名
您的組織單位名稱是什么?
[Unknown]: oksonic
您的組織名稱是什么?
[Unknown]: oksonic
您所在的城市或區域名稱是什么?
[Unknown]:
您所在的州或省份名稱是什么?
[Unknown]:
該單位的兩字母國家代碼是什么
[Unknown]: cn
CN=localhost, OU=oksonic, O=oksonic, L=kunming, ST=yunnan, C=cn 正確嗎?
[否]: y
完成后會在Tomcat目錄生成一個名為casserver的文件
iii. 生成服務端證書,執行以下命令
keytool -export -alias casserver -storepass changeit -file server.cer -keystore server.keystore
命令執行后生成一個server.cer的證書文件
iv. 生成客戶端密匙,執行以下命令
keytool -genkey -alias casclient -keyalg RSA -keypass changeit -storepass changeit -keystore client.keystore
v. 生成客戶端證書,執行以下命令
keytool -export -alias casclient -storepass changeit -file client.cer -keystore client.keystore
命令執行后生成一個server.cer的證書文件
vi. 導入證書文件到cacerts 文件中,執行以下命令
keytool -import -trustcacerts -alias server -file server.cer -keystore cacerts -storepass changeit
keytool -import -trustcacerts -alias client -file client.cer -keystore cacerts -storepass changeit
把cacerts文件,拷貝到<JAVA_HOME>\jre\lib\security目錄下
vii. 拷貝cas-server-
viii. 修改Tomcat的配置文件server.xml把以下補注釋的內容打開
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
加入紅字部份后的內容如下:
<Connector port="8443" maxHttpHeaderSize="8192"
keystorePass="changeit" keystoreFile="/server.keystore"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
b) 配置客戶端應用
i. 使用Tomcat的例子jsp-examples來做客戶端
ii. 打開項目中的web.xml文件,加入以下配置信息
<filter>
<filter-name>CASFilter</filter-name>
<filter-class>
edu.yale.its.tp.cas.client.filter.CASFilter
</filter-class>
<init-param>
<param-name>
edu.yale.its.tp.cas.client.filter.loginUrl
</param-name>
<param-value>https://localhost:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>
edu.yale.its.tp.cas.client.filter.validateUrl
</param-name>
<param-value>
https://localhost:8443/cas/proxyValidate
</param-value>
</init-param>
<init-param>
<param-name>
edu.yale.its.tp.cas.client.filter.serverName
</param-name>
<param-value>localhost:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/ *</url-pattern>
</filter-mapping>
拷貝cas-client-java-
現在可以啟動Tomcat來測試一下是否能夠進入到登錄頁
c) 配置CAS使用數據庫進行驗證
i. 在MySql中的Test庫中新建app_user表
CREATE TABLE `app_user` (
`username` varchar(30) NOT NULL default '',
`password` varchar(45) NOT NULL default '',
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
添加以下用戶:
INSERT INTO `app_user` (`username`,`password`) VALUES
('oksonic','oksonic'),
('oksonic1','oksonic1');
ii. 修改cas項目中的deployerConfigContext.xml文件
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
注釋掉該行,在其下加入:
<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>
并添加一個bean:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://localhost:3306/test</value></property>
<property name="username"><value>test</value></property>
<property name="password"><value>test</value></property>
</bean>
拷貝cas-server-jdbc-