CAS数据库查询认证xml配置
CAS数据库查询认证(xml配置)
上篇博客介绍的
CAS
的
Demo
,登录界面用户名、密码并没有通过数据库查询认证。本博客,将介绍如何通过
xml
配置,进行
CAS
登录数据库查询认证。
所需数据库
sso
_cas,
库中的表:
tb_user
,表中字段:
Id
、
username
、
password
;
数据库查询认证(通过
xml
配置)
1
,修改
cas
服务端配置
tomcat
下
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 tb_user whereusername=?” >
添加
datasource bean
的定义:
<beanid=“dataSource”
class=“org.springframework.jdbc.datasource.DriverManagerDataSource”>
<propertyname=“driverClassName” value=“com.mysql.jdbc.Driver” />
<propertyname=“url” value=“jdbc:mysql://localhost/sso_cas” />
<propertyname=“username” value=“root” />
<propertyname=“password” value=“root” />
注意
1,QueryDatabaseAuthenticationHandler
是
cas-server-support-jdbc
提供的查询接口其中一个是通过配置一个
SQL
语句查出密码,与所给密码匹配;
2,sql
语句
:select password from tb_user whereusername=?
根据用户名
user
name
查询表
tb_user
中密码
password
字段,
CAS
会匹配用户输入的密码,如果匹配则通过;
注:可配置多个数据库
如果需要配置多个数据库,可以配置多个
QueryDatabaseAuthenticationHandler
和多个
datasource
假如
a_user
中有一个用户:
auser
,
b_user
中有一个用户
buser
,这样你无论用哪一个用户登录,
CAS
就会先查
a_user
,如果用户名密码都正确,那么就通过,如果
a_user
中验证失败,那么
CAS
就会再查
b_user
,用户名密码都正确就算通过了,此时不正确,就算这次登录验证没通过。
添加相关的
jar
包
需要在
web
项目的
lib
下添加两个包:
cas-server-support-jdbc-x.x.x.jar
和
mysql-connector-java-x.x.x-bin.jar
(具体版本号根据情况而定)
按如下配置好后,进入
CAS
登录页,用户名密码需要通过查询数据库来认证,输入用户名
admin
,密码
123
,才可登录成功;如果输入用户名
admin
,密码
admin
是不能登录成功。