基于CAS实现单点登录(SSO):配置CAS服务端的数据库查询认证机
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了基于CAS实现单点登录(SSO):配置CAS服务端的数据库查询认证机,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3062字,纯文字阅读大概需要5分钟。
内容图文
![基于CAS实现单点登录(SSO):配置CAS服务端的数据库查询认证机](/upload/InfoBanner/zyjiaocheng/564/e007fdff4f9e405aa304827dd6e1a666.jpg)
[一]、概述 继前面介绍过 基于 CAS 实现 单点登录 ( SSO )的 实例演示 ,演示过程中服务端认证机制采用的是测试环境的默认配置,本文将重点演示如何通过查询数据库,对用户名和密码进行相关的认证配置。 [二]、演示环境 基本环境同: 基于 CAS 实现 单点登
[一]、概述
继前面介绍过基于CAS实现单点登录(SSO)的实例演示,演示过程中服务端认证机制采用的是测试环境的默认配置,本文将重点演示如何通过查询数据库,对用户名和密码进行相关的认证配置。
[二]、演示环境
- 基本环境同: 基于CAS实现单点登录(SSO)的实例演示
- Mysql:5.1.51
[三]、演示步骤
1.创建演示的用户数据
在mysql数据库中创建Database,以 test 为例,然后再创建用户表:sso_t_user,详细SQL如下:
CREATETABLE `sso_t_user` (
`Id` int(11) NOT NULLAUTO_INCREMENT,
`login_name` varchar(50) DEFAULTNULL,
`password` varchar(255) DEFAULTNULL,
PRIMARY KEY (`Id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
向表sso_t_user 中插入如下数据:
INSERTINTO `sso_t_user` VALUES(1,'admin','96e79218965eb72c92a549dd5a330112');
INSERT INTO `sso_t_user` VALUES (2,'user','96e79218965eb72c92a549dd5a330112');
Tips:
- 密码以MD5 加密后存放数据库中为例
- “111111”的MD5值为:“96e79218965eb72c92a549dd5a330112”
2.修改cas服务端配置
在%tomcat_cas%/webapps/cas/WEB_INF/deployerConfigContext.xml 找到如下信息:
<beanclass="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler"/>
修改成如下:
<beanclass="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<propertyname="dataSource" ref="dataSource">
<propertyname="sql" value="select password from sso_t_user wherelogin_name=?">
<propertyname="passwordEncoder" ref="MD5PasswordEncoder">
同时增加datasource和加密处理两个bean的定义:
<beanid="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<propertyname="url" value="jdbc:mysql://localhost/test"/>
<propertyname="username" value="root"/>
<propertyname="password" value=""/>
<constructor-argindex="0" value="MD5" />
注意
在配置过程中我遇到了异常:No bean named 'dataSource' isdefined,因为dataSource配置到了authenticationManager这个Bean的里面去了
QueryDatabaseAuthenticationHandler是cas-server-support-jdbc提供的查询接口其中一个是通过配置一个SQL 语句查出
密码,与所给密码匹配;
sql语句就是查询哪一张表,本例根据sso_t_user表的login_name字段查询密码,CAS会匹配用户输入的密码,如果匹配则通过;
passwordEncoder这个是处理密码的加密,如果想要你的应用中数据库保存的是加密过的,比如本例是使用MD5加密的,所以配置了MD5PasswordEncoder这个Handler,cas内置了MD5的功能所以只需要配置一下就可以了;如果在实际应用中使用的是公司自己的加密算法那么就需要自己写一个Handler来处理密码,实现方式也比较简单,创建一个类继承org.jasig.cas.authentication.handler.PasswordEncoder然后在encode方法中加密用户输入的密码然后返回即可。
3.添加相关的jar包
需要在web项目的lib下添加两个包:cas-server-support-jdbc-x.x.x.jar 和 mysql-connector-java-x.x.x-bin.jar(具体版本号根据情况而定)
4.测试认证过程
分别启动已经配置好的三个tomcat分别为:tomcat-cas、tomcat-app1、tomcat-app2.
此时在cas-server认证界面输入:admin/111111,需要和数据库中查询到的密码验证匹配后才能登陆系统。
内容总结
以上是互联网集市为您收集整理的基于CAS实现单点登录(SSO):配置CAS服务端的数据库查询认证机全部内容,希望文章能够帮你解决基于CAS实现单点登录(SSO):配置CAS服务端的数据库查询认证机所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。