1 目的
撰写本文的目的是记录一个简单、以数据库为验证用户的单点登陆的CAS配置过程,看过其他文档,要么没有配置过程,要么过于复杂。配置之前建议先仔细研究下相关的参考文档,只有明白了相关原理,配置起来其实很简单。
2 名词解说
Single Sign On - 通过用户登录一次,即可获得需访问系统和应用软件的授权。
Yale CAS - 耶鲁大学开发的单点登录(Single Sign On)系统称为CAS(Central Authentication Server)被设计成一个独立的Web应用程序(cas.war)。
3 参考
Keytool使用指南:
Tomcat-ssl配置指南:
Cas文档:
4 安装环境
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 代码
- <filter>
- <filter-name>CASFilterfilter-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/loginparam-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:8080param-value>
- init-param>
- <init-param>
- <param-name>
- edu.yale.its.tp.cas.client.filter.serverName2
- param-name>
- <param-value>192.168.5.13:8080param-value>
- init-param>
- filter>
- <filter-mapping>
- <filter-name>CASFilterfilter-name>
- <url-pattern>/servlet/*url-pattern>
- 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 代码
- <filter>
- <filter-name>CASFilterfilter-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/loginparam-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:8080param-value>
- init-param>
- <init-param>
- <param-name>
- edu.yale.its.tp.cas.client.filter.serverName2
- param-name>
- <param-value>192.168.5.13:8080param-value>
- init-param>
- filter>
- <filter-mapping>
- <filter-name>CASFilterfilter-name>
- <url-pattern>/*url-pattern>
- 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 代码
- <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,可以了。
分享到:
相关推荐
交换机配置日志服务器
.Net轻量级简单日志组件 日志组件位于System.Database.dll中,项目引用命名空间(System.Logger)即可,日志组件提供五种级别的日志记录(DEBUG|INFO|WARN|ERROR|FATAL),最低DEBUG,最高FATAL,当配置的级别大于等于...
这里简单介绍关于如何使用log4Net来开速配置日志记录,很简单
一直在使用log4j 每天输出到一个日志文件中,该文件名为:“XXX_年月日时分.log”的形式。 这是一个eclipse工程,最简单的配置实现上述功能。
简单看了一下,就是如何在linux平台上接收华三路由产生的日志的过程配置文件。适合日志服务器的配置。
ConOS7 系统配置syslog日志转发的详细配置、验证过程。
logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。 logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能。 ...
ssm一个简单项目所需的xml配置文件,spring+springmvc+mybatis框架中用到了三个XML配置文件:web.xml,spring-mvc.xml,spring-mybatis.xml.第一个不用说,每个web项目都会有的也是关联整个项目的配置.第二个文件spring-...
log4j配置文件以及配置文件说明 包里有一个log4j配置文件 和一个配置详解
一个性能高,使用简单的日志解决方案。本模块实现日志信息的批量写入文件,定时自动flush到文件中,写入文件的日志级别可动态调整,单个日志文件大小可配置,循环对日志文件写入,这样不会造成机器空间被日志文件...
java日志 配置文件 包含配置文件各个参数的定义及参数含义
一个简单的日志框架,很早写的,五一闲了两天,修一修注释一下拿出来共享。。。。。。 注意: 该日志框架五脏不全。。。。。 改进意见: 1.可以在配置文件中添加日志输出格式,然后在代码中读取该格式用以控制输出...
详细讲解SOAMANAGER日志配置流程
Goschild日志记录库这是一个小型日志记录库,其开发目的是简化,可配置性且不受依赖。日志级别有4个日志级别: Error , Warning , Info和Debug 。 还有2个特殊的日志级别: None和All 。 日志记录机制使用那些日志...
利用以上python代码配置日志输出时,如果该脚本是主脚本(即import别人,不被别人import,在执行逻辑的最顶端),path表示的日志配置文件只能与该脚本在同一目录下或者在其子文件夹里。 import sys sys.path.append...
maven工程搭建,springboot输出日志配置,maven工程搭建,springboot输出日志配置,maven工程搭建,springboot输出日志配置
apache日志配置 摘 要:通过本节介绍,让学生了解...因此,我们可以很容易想到,apache的配置信息不是存在同一个文件中,而是分开在几个不同的文件中的,当apache2服务器启动时,apache2.conf就将零散的配置文件以Incl
学习日志properties文件的文档,日志属性配置,里头有详细的介绍。
Log4j日志配置说明,Log4j日志配置说明Log4j日志配置说明,Log4j日志配置说明
Logtown一个JavaScript的简单日志Facade