1. 配置数据库
#创建CAS数据库
CREATE DATABASE cas;
#创建用户表
CREATE TABLE `t_user` (
`id` int(0) NOT NULL AUTO_INCREMENT,
`user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
#添加一笔用户数据
INSERT INTO `t_user` VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e');
这边密码用的是MD5加密,明文123456,加密后是e10adc3949ba59abbe56e057f20f883e
2. 修改配置文件
修改 %tomcat_home%/webapps/cas/WEB_INF/deployerConfigContext.xml
,添加以下内容
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://192.168.25.129/cas" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean>
<bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
<constructor-arg index="0" value="MD5" />
</bean>
<!-- 配置认证类 -->
<bean id="dbAuthHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource" ></property>
<property name="sql" value="select password from t_user where user_name=?" ></property>
<property name="passwordEncoder" ref="MD5PasswordEncoder" ></property>
</bean>
我这边用的是MySQL8,所以driverClassName配置 com.mysql.cj.jdbc.Driver
如果是MySQL5.x,改成 com.mysql.jdbc.Driver 即可
然后替换原验证规则:
#找到下面这句配置,然后注释掉
<!--<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />-->
#改成这句
<entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver" />
3. 添加JAR包依赖
找到 ${tomcat_home}\webapps\cas\WEB-INF\lib
目录,添加以下2个JAR包:
- mysql-connector-java-8.0.11.jar:如果是MySQL5.x,换成对应版本的就行
- cas-server-support-jdbc-4.0.0.jar:从 cas-server-4.0.0\modules 目录拷贝过来
4. 测试
启动 tomcat ,浏览器输入 http://localhost:8080/cas/login
输入账号 admin,密码 123456 登录成功