当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

CAS服务器实验之六:自定义CAS服务器数据源

发表于: 2013-04-11   作者:dinguangx   来源:转载   浏览次数:
cas
摘要:   在前面的示例中,使用的用户名和密码都是自己捏造出来的,而在实际的应用系统中,都需要从应用数据库中读取用户名和密码,下面就进行自定义CAS服务器的数据源的实验。 准备数据库 在mysql数据库test中新建表user   CREATE TABLE `user` ( `username` varchar(46) NOT NULL, `password` v

 

在前面的示例中,使用的用户名和密码都是自己捏造出来的,而在实际的应用系统中,都需要从应用数据库中读取用户名和密码,下面就进行自定义CAS服务器的数据源的实验。

准备数据库

mysql数据库test中新建表user

 

CREATE TABLE `user` (
  `username` varchar(46) NOT NULL,
  `password` varchar(46) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8


  
为该表增加两条数据(密码使用MD5加密)

 

 

insert into user(username,password) values('dylan',md5('dylan'));
insert into user(username,password) values('admin',md5('admin'));

 cas服务器配置

 

打开cas-serverWEB-INF/deployerConfigContext.xml文件,找到其中的authenticationManagerauthenticationHandlers属性配置。默认的配置是这样的:

 

<list>
	<!-- ... -->
	<bean		class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
		p:httpClient-ref="httpClient" p:requireSecure="false" />
	<!-- ... -->
	<bean		class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
</list>

 可以看到这里配置了一个SimpleTestUsernamePasswordAuthenticationHandler,这个用户名密码的认证器在认证用户时,只要用户名和密码保持一致,就认为是有效的用户,这也是为什么在前面的测试中,只要输入的用户名和密码一致就能登录的原因。在实际的生产环境中,应该将该认证器取消掉。如换成如下的认证器:

 

<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
	<property name="dataSource">
		<bean id="dataSource"
			class="org.springframework.jdbc.datasource.DriverManagerDataSource">
			<property name="driverClassName" value="com.mysql.jdbc.Driver" />
			<property name="url"				value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8" />
			<property name="username" value="root" />
			<property name="password" value="root" />
		</bean>
	</property>
	<property name="sql" value="select password from user where username=? " />
	<property name="passwordEncoder">
		<bean class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
			<constructor-arg value="MD5" />
		</bean>
	</property>
</bean>


    该认证器可以从数据表user中查询用户密码,并对密码进行MD5加密校验,这个认证器位于cas-server-support-jdbc包中,需要在项目中增加相应的jar包。如果使用的是maven配置,配置POM如下:

<dependency>
    <groupId>org.jasig.cas</groupId>
    <artifactId>cas-server-support-jdbc</artifactId>
    <version>${project.version}</version>
</dependency>

 这里用到了mysqlJDBC驱动,需要将相应的jar包加入cas服务器的lib目录。

 

 

 

在配置文件中可以看到,这里的认证器配置的是一个list,默认情况下,只要有一个认证器通过认证,就认为是合法的用户,建议选择合适的认证器放在最前面。

 

测试

重新启动cas-server,进入登录页面,分别尝试使用四组用户进行测试:admin/admindylan/dylantest/testdylan/123456进行测试,结果前两组登录通过,后两组登录失败,验证成功。

 

 

参考资料:

http://wenku.baidu.com/view/f0b268d084254b35eefd34b8.html 

http://www.blogjava.net/tufanshu/archive/2011/01/21/343290.html 

http://www.kafeitu.me/sso/2010/11/05/sso-cas-full-course.html 

http://zxs19861202.iteye.com/blog/855856 

http://www.cnblogs.com/hellowood/archive/2010/08/05/1793364.html

 

CAS服务器实验之六:自定义CAS服务器数据源

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
CAS服务器数据源的配置真实验证,在前面的示例中,使用的用户名和密码都是自己捏造出来的,而在实际
CAS服务器数据源的配置真实验证,在前面的示例中,使用的用户名和密码都是自己捏造出来的,而在实际
cas服务器配置 进行单点退出时,需要通过cas服务器的/logout路径执行退出,以便cas服务器清除对当前
cas服务器配置 进行单点退出时,需要通过cas服务器的/logout路径执行退出,以便cas服务器清除对当前
客户端应用创建 新建一动态web工程cas-client1,这里使用的是maven来创建,在pom文件中增加对cas-cl
客户端应用创建 新建一动态web工程cas-client1,这里使用的是maven来创建,在pom文件中增加对cas-cl
下载cas server之后,在解压之后的modules包可以看到如下内容: 将这里的cas-server-webapp-3.4.4.w
下载cas server之后,在解压之后的modules包可以看到如下内容: 将这里的cas-server-webapp-3.4.4.w
什么是SSO 所谓SSO(Single Sign On)单点登录是指基于用户/会话认证的一个过程,用户只需一次性提
什么是SSO 所谓SSO(Single Sign On)单点登录是指基于用户/会话认证的一个过程,用户只需一次性提
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号