一个简单实际可用的CAS配置日志

1      目的
撰写本文的目的是记录一个简单、以数据库为验证用户的单点登陆的 CAS 配置过程,看过其他文档,要么没有配置过程,要么过于复杂。配置之前建议先仔细研究下相关的参考文档,只有明白了相关原理,配置起来其实很简单。
2      名词解说
Single Sign On - 通过用户登录一次,即可获得需访问系统和应用软件的授权。
Yale CAS - 耶鲁大学开发的单点登录( Single Sign On )系统称为 CAS Central 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 客户端
我们要将 tomcat jsp-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-pattern jsp-examples /* servlets-examples /servlet/*
 
5.3.3   设置需要用到的cas-client库
将casclient-2.1.1.zip改名为casclient-2.1.1.jar, copy jsp-examples servlets-examples lib
 
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 代码
  1. <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />  

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

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

 定义 dataSource bean,注意,配置的地方应该在之前,不要放错了位置,不是和以上验证bean放在一起。

xml 代码
  1. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">  
  2. <property name="driverClassName"><value>oracle.jdbc.driver.OracleDrivervalue>property>  
  3. <property name="url"><value>jdbc:oracle:thin:@127.0.0.1:1521:oracle9ivalue>property>  
  4. <property name="username"><value>scottvalue>property>  
  5. <property name="password"><value>tigervalue>property>  
  6. 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,可以了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值