CAS 实现单点登录(SSO)数据库查询认证机制-xml方式(三)
2015-04-17 19:50
645 查看
继前面介绍过基于CAS实现单点登录(SSO)的实例演示,演示过程中服务端认证机制采用的是默认配置即CAS Servier默认用户名和密码一致即可登录成功,那么本文将侧重于应用方面,真正通过查询用户名密码来进程验证用户是否可以登录。
修改成如下:
同时增加datasource和加密处理两个bean的定义:
修改后的效果:
演示效果:
注意:
1.密码加密过程,如果不用,注释掉即可。
2.QueryDatabaseAuthenticationHandler是cas-server-support-jdbc提供的查询接口其中一个是通过配置一个SQL 语句查出密码,与所给密码匹配;
3.sql语句就是查询哪一张表,本例根据t_user表的login_name字段查询密码,CAS会匹配用户输入的密码,如果匹配则通过;
4.passwordEncoder这个是处理密码的加密,如果想要你的应用中数据库保存的是加密过的,比如本例是使用MD5加密的,所以配置了MD5PasswordEncoder这个Handler,cas内置了MD5的功能所以只需要配置一下就可以了;如果在实际应用中使用的是公司自己的加密算法那么就需要自己写一个Handler来处理密码,实现方式也比较简单,创建一个类继承org.jasig.cas.authentication.handler.PasswordEncoder然后在encode方法中加密用户输入的密码然后返回即可。
假如a_user中有一个用户:auser,b_user中有一个用户buser,这样你无论用哪一个用户登录,CAS就会先查a_user,如果用户名密码都正确,那么就通过,如果a_user中验证失败,那么CAS就会再查b_user,用户名密码都正确就算通过了,此时不正确,就算这次登录验证没通过。
CAS Server添加相关的jar包
需要在web项目的lib下添加两个包:cas-server-support-jdbc-x.x.x.jar和 mysql-connector-java-x.x.x-bin.jar(具体版本号根据情况而定)修改CAS Server的配置
在%tomcat_cas%/webapps/cas/WEB_INF/deployerConfigContext.xml找到如下信息:<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" /> </span>
修改成如下:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="dataSource" ref="dataSource" ></property> <property name="sql" value="select password from t_user where login_name=?" ></property> <!--<property name="passwordEncoder" ref="MD5PasswordEncoder" ></property>--> </bean> </span>
同时增加datasource和加密处理两个bean的定义:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost/test" /> <property name="username" value="root" /> <property name="password" value="root" /> </bean> <bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"> <constructor-arg index="0" value="MD5" /> </bean> </span>
修改后的效果:
本地数据库中添加的数据信息:
演示效果:
注意:
1.密码加密过程,如果不用,注释掉即可。
2.QueryDatabaseAuthenticationHandler是cas-server-support-jdbc提供的查询接口其中一个是通过配置一个SQL 语句查出密码,与所给密码匹配;
3.sql语句就是查询哪一张表,本例根据t_user表的login_name字段查询密码,CAS会匹配用户输入的密码,如果匹配则通过;
4.passwordEncoder这个是处理密码的加密,如果想要你的应用中数据库保存的是加密过的,比如本例是使用MD5加密的,所以配置了MD5PasswordEncoder这个Handler,cas内置了MD5的功能所以只需要配置一下就可以了;如果在实际应用中使用的是公司自己的加密算法那么就需要自己写一个Handler来处理密码,实现方式也比较简单,创建一个类继承org.jasig.cas.authentication.handler.PasswordEncoder然后在encode方法中加密用户输入的密码然后返回即可。
配置多个数据库
如果需要配置多个数据库,可以配置多个QueryDatabaseAuthenticationHandler和多个datasource假如a_user中有一个用户:auser,b_user中有一个用户buser,这样你无论用哪一个用户登录,CAS就会先查a_user,如果用户名密码都正确,那么就通过,如果a_user中验证失败,那么CAS就会再查b_user,用户名密码都正确就算通过了,此时不正确,就算这次登录验证没通过。
总结:
以上是针对数据库查询的数据进行验证过程的简单配置,在CAS的应用过程中很常见,针对我们日常应用的需求CAS帮我们提供了很多自定义的方式,下篇博客会继续讲解!相关文章推荐
- CAS 实现单点登录(SSO)数据库查询认证机制-自定义编码方式(四)
- IT忍者神龟之基于CAS实现单点登录(SSO)之配置CAS服务端的数据库查询认证机制(一)
- SSO之CAS+LDAP实现单点登录认证
- CAS服务端-配置数据库查询认证机制
- SSO单点登录 cas_server通过查询数据库验证用户名、密码正确性
- CAS数据库查询认证(xml配置)
- 用CAS实现SSO(单点登录)+数据库读取
- CAS实现单点登录(数据库认证)
- 利用CAS之SSO模块实现单点登录认证
- 浏览器三种刷新方式的缓存机制-----单点登录SSO的实现原理---PHP版单点登陆实现方案
- CAS 登录成功后返回的值实现根据不同的条件查询不同的表或者数据库
- 从外部查询看数据库的内部实现机制
- CAS实现单点登录(SSO)
- Axis2+Rampart(WSS4J)实现UsernameToken认证方式的WS-Security(基于SOAP的Web安全调用机制)
- CAS实现SSO单点登录原理 .
- cas+openldap实现单点登录认证一
- 谁都能看懂的单点登录(SSO)实现方式(附源码)
- Liferay门户与CAS实现SSO单点登录
- 禁止以操作系统认证方式登录数据库
- 禁止以操作系统认证方式登录数据库