下载cas模板网址:
https://github.com/apereo/cas-overlay-template/tree/5.3
下载之后解压使用idea打开
项目根src/main/resources目录并把overlaysorg.apereo.cas.cas-server-webapp-tomcat-5.3.16WEB-INFclassesapplication.properties文件复制到resources目录下
然后修改overlaysorg.apereo.cas.cas-server-webapp-tomcat-5.3.16WEB-INFclassesservicesHTTPSandIMAPS-10000001.json文件
将serviceId由原本的"^(https|imaps)://.*"改为"^(https|imaps|http)://.*"
备注:这里修改的文件是为了客户端登录,不改会报错
到这里已经可以启动测试了 用户名:casuser 密码:Mellon 这是默认的(可以手动修改,在application.properties文件的最后一行)
接下来修改application.properties文件,加入如下配置
cas.tgc.secure=false cas.serviceRegistry.initFromJson=true #查询账号密码sql,必须包含密码字段 cas.authn.jdbc.query[0].sql=select * from sys_user where username=? #指定上面的sql查询字段名(必须) cas.authn.jdbc.query[0].fieldPassword=password #数据库驱动 cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver #数据库连接 cas.authn.jdbc.query[0].url=jdbc:mysql://你的数据库IP地址:3306/你的数据库名?useUnicode=true&characterEncoding=UTF-8 #数据库用户名 cas.authn.jdbc.query[0].user=你的数据库连接名 #数据库密码 cas.authn.jdbc.query[0].password=你的数据库连接密码 #默认加密策略,通过encodingAlgorithm来指定算法,默认NONE不加密 cas.authn.jdbc.query[0].passwordEncoder.type=com.cas.MyPasswordEncoder cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8 cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
这里的加密策略type原本应该是DEFAULT,因为我的数据库存的用户密码加密是MD5密文大写,
它这里只能匹配小写的密文,所以我自定义了一个加密策略(其实就是拦截一下把密码的密文改为大写)
创建类:
自定义加密策略代码如下:
package com.cas;
import org.springframework.security.crypto.password.PasswordEncoder;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Locale;
public class MyPasswordEncoder implements PasswordEncoder {
@Override
public String encode(CharSequence charSequence) {
return charSequence.toString();
}
@Override
public boolean matches(CharSequence charSequence, String str) {
//charSequence 为用户输入的密码,str 为数据库的密码
//将用户输入的密码进行MD5加密之后改为大写
charSequence = encryption(charSequence.toString()).toUpperCase(Locale.ROOT);
if (charSequence.equals(str)){
return true;
}
return false;
}
private String encryption(String str){
StringBuilder md5= new StringBuilder();
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(str.getBytes(StandardCharsets.UTF_8));
byte[] bytes=messageDigest.digest();
for(byte b:bytes){
md5.append(byteToHex(b));
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return md5.toString();
}
private String byteToHex(byte b){
String hex = Integer.toHexString(b & 0xFF);
if(hex.length() < 2){
hex = "0" + hex;
}
return hex;
}
}
pom文件加入MySQL依赖:
org.apereo.cas cas-server-support-jdbc${cas.version} org.apereo.cas cas-server-support-jdbc-drivers${cas.version} mysql mysql-connector-java${mysql.driver.version}
至此,cas服务端配置完毕!
接下来配置客户端,也就是spring boot项目
pom文件增加依赖:
net.unicon.cas cas-client-autoconfig-support1.4.0-GA org.springframework.security spring-security-casorg.springframework.boot spring-boot-configuration-processortrue org.jasig.cas.client cas-client-core3.4.1
启动类加@EnableCasClient注解
application.yaml加入配置
完事!



