环境
a) Windows 2003 sp1
b) JDK1.6.0_02
c) Tomcat 5.5.23
d) Mssql2k
二.准备
a) cas-server-3.0.6.zip 下载地址:http://www.ja-sig.org/products/cas/index.html
b) cas-client-java-2.1.1.zip 下载地址:同上
c) 安装完jdk和jre后,需要配置JAVA_HOME和PATH=%JAVA_HOME%/bin
三.步骤
a) 配置Tomcat使用SSL安全认证
i. 使用命令提示符进入到Tomcat安装目录
ii. 生成服务端密匙,执行以下命令
keytool -genkey -alias casserver -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore
运行后出现提示信息:
您的名字与姓氏是什么?
[Unknown]: login.xxx.com.cn 这里一定要填写正确的域名
其余可不填
完成后会在Tomcat目录生成一个名为casserver的文件
iii. 生成服务端证书,执行以下命令
keytool -export -alias casserver -storepass changeit -file server.cer -keystore server.keystore
命令执行后生成一个server.cer的证书文件
IV、V步骤可以省略
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
命令执行后生成一个client.cer的证书文件
vi. 导入证书文件到cacerts 文件中,执行以下命令
keytool -import -trustcacerts -alias server -file server.cer -keystore cacerts -storepass changeit
client.cer可以不用倒入
keytool -import -trustcacerts -alias client -file client.cer -keystore cacerts -storepass changeit
把cacerts文件,拷贝到<JAVA_HOME>/jre/lib/security目录下
注:实做发现应该在C:/Program Files/Java/jre1.6.0_02/lib/security,可从Java控 制面板查看
vii. 拷贝cas-server-3.0.6.zip包内的target目录下的cas.war文件到Tomcat目录下的webapps目录下
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://login.xxx.com.cn:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>
edu.yale.its.tp.cas.client.filter.validateUrl
</param-name>
<param-value>
https://login.xxx.com.cn:8443/cas/proxyValidate
</param-value>
</init-param>
<init-param>
<param-name>
edu.yale.its.tp.cas.client.filter.serverName
</param-name>
<param-value>xxx.yyy.zzz:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
拷贝cas-client-java-2.1.1.zip包中的casclient.jar到项目的lib目录下
现在可以启动Tomcat来测试一下是否能够进入到登录页
c) 配置CAS使用数据库进行验证
i. 在MsSql中的Test库中新建app_user表
CREATE TABLE app_user (
username varchar(30) primary key ,
password varchar(45)
) ;
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>net.sourceforge.jtds.jdbc.Driver</value></property>
<property name="url"><value>jdbc:jtds:sqlserver://xxx.xxx.xxx.xxx:1433/test</value></property>
<property name="username"><value>user</value></property>
<property name="password"><value>passwd</value></property>
</bean>
修改后的文件片断如下:
.
.
.
<!--
<bean
class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
-->
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="sql" value="select password from users where code=?" />
<property name="dataSource" ref="dataSource" />
</bean>
</list>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
<property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
<property name="url"><value>jdbc:jtds:sqlserver://10.1.2.81:1433/reader_test</value></property>
<property name="username"><value>zw</value></property>
<property name="password"><value>aaa</value></property>
</bean>
</beans>
拷贝cas-server-jdbc-3.0.6.jar和jtds-1.2.jar到webapps/cas/WEB-INF/lib下。