单点登录(五)cas改造——使用jdbc进行用户验证
来源:互联网 发布:豫广网络 编辑:程序博客网 时间:2024/05/16 23:37
在前面的示例中,只要用户名密码保持一致,就可以直接登录了,而在实际的应用系统中,都需要从应用数据库中读取用户名和密码,下面就进行自定义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-server的WEB-INF/deployerConfigContext.xml文件,找到其中的authenticationManager的authenticationHandlers属性配置。默认的配置是这样的:
<list><!-- ... --><beanclass="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"p:httpClient-ref="httpClient" p:requireSecure="false" /><!-- ... --><beanclass="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" /></list>可以看到这里配置了一个SimpleTestUsernamePasswordAuthenticationHandler,这个用户名密码的认证器在认证用户时,只要用户名和密码保持一致,就认为是有效的用户,这也是为什么在前面的测试中,只要输入的用户名和密码一致就能登录的原因。在实际的生产环境中,应该将该认证器取消掉。如换成如下的认证器:
xml代码:
<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&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>3.3.1</version></dependency>
这里用到了mysql的JDBC驱动,需要将相应的jar包加入cas服务器的lib目录。
配置文件中可以看到,这里的认证器配置的是一个list,默认情况下,只要有一个认证器通过认证,就认为是合法的用户,建议选择合适的认证器放在最前面。
测试
重新启动cas-server,进入登录页面,分别尝试使用四组用户进行测试:admin/admin,dylan/dylan,test/test,dylan/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改造——使用jdbc进行用户验证
- 改造CAS单点登录 --- 验证码
- cas单点登录改为数据库验证用户
- Cas(07)——建立使用Cas进行单点登录的应用
- Cas(07)——建立使用Cas进行单点登录的应用
- 使用报表finereport进行CAS单点登录
- 单点登录CAS使用记(三):实现自定义验证用户登录
- CAS单点登录-自定义认证之JDBC(五)
- CAS(7)-建立使用Cas进行单点登录的应用
- CAS(7)-建立使用Cas进行单点登录的应用
- 单点登录(六)cas改造——退出到指定页面
- 改造CAS单点登录 --- 部署测试
- 二、CAS单点登录之mysql数据库用户验证
- CAS单点登录之mysql数据库用户验证及常见问题
- CAS单点登录五-使用http而不是https
- CAS 使用 ESUP 插件认证 LDAP 用户的单点登录
- 建立使用Cas进行单点登录的应用
- 建立使用Cas进行单点登录的应用
- java学习笔记2
- Google I/O 2013 – Volley: Easy, Fast Networking for Android
- jqm(jquery mobile)报错:error loading page解决
- CharacterEncodingFilter 失效
- vim 插件
- 单点登录(五)cas改造——使用jdbc进行用户验证
- Java IO性能分析
- 浅析linux内核中的idr机制
- 修改global_name使创建dblink不带域名
- 屏幕在休眠唤醒后闪屏
- mongo 高级操作
- Android中IntentService的原理及使用
- qsort函数应用大全
- camera GC0339 Rawdata hal层分析