CAS单点登录(三) 服务端数据源设置

2.1 需求分析

我们现在让用户名密码从我们的 user 表里做验证
(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://127.0.0.1:3306/casdb?characterEncoding=utf8"
p:user="root"
p:password="root" />

<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"/>

然后在配置文件开始部分找到如下配置

<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" />
        </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"/>

(2)将以下三个 jar 包放入 webapps\cas\WEB-INF\lib 下

c3p0-0.9.1.2.jar
cas-server-support-jdbc-4.0.0.jar
mysql-connector-java-5.1.32.jar

(这三个 jar 包在资源\cas\jar 目录下)
用数据库中的用户名和密码进行测试

猜你喜欢

转载自blog.csdn.net/houysx/article/details/80578467