我们在使用CAS进行单点登录时肯定是要用真实数据来进行校验的,所以就需要将CAS的服务端中加入连接数据库的配置,下面就跟大家一起学习一下。
1、修改cas服务端中web-inf下deployerConfigContext.xml ,添加如下配置
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
p:driverClass="com.mysql.jdbc.Driver"
p:jdbcUrl="jdbc:mysql:// 192.168.200.128:3306/test?characterEncoding=utf8"
p:user="root"
p:password="1234" />
<bean id="passwordEncoder"
class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"
c:encodingAlgorithm="MD5"
p:characterEncoding="UTF-8" />
<bean id="dbAuthHandler"
class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
p:dataSource-ref="dataSource"
p:sql="select password from tb_user where username = ?"
p:passwordEncoder-ref="passwordEncoder"/>
2、然后在配置的开始部分找到如下配置进行修改
<bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager">
<constructor-arg>
<map>
<entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
<!-- <entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />
<entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver"/>
</map>
</constructor-arg>
<property name="authenticationPolicy">
<bean class="org.jasig.cas.authentication.AnyAuthenticationPolicy" />
</property>
</bean>
其中
<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />
一句是使用固定的用户名和密码,我们在下面可以看到这两个bean ,如果我们使用数据库认证用户名和密码,需要将这句注释掉。
添加下面这一句配置
<entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver"/>
3、在webapps\cas\WEB-INF\lib 下引入数据库相关jar包,然后重启CAS服务端。
4、启动数据库服务,创建一张用户表,包含username和password字段,插入几条数据。
然后就可以用数据库中的用户名和密码进行测试了。
注:如果配置用户数据后登陆失败,参考以下内容进行修改:
还是web-inf下deployerConfigContext.xml。
<bean id="dbAuthHandler"
class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
p:dataSource-ref="dataSource"
p:sql="select password from tb_user where username = ?" />
<!-- p:passwordEncoder-ref="passwordEncoder"-->
注掉CAS的密码加密。因为我们一般配置的密码已经是密文。无需在CAS进行配置。
喜欢的朋友欢迎一键三连。我们一起学习,进步~~