1.在application配置文件中加入如下配置,就可以进行简单的MD5进行加密验证了:
#加md5策略
#进行自定义加密需要在spring.factories里面加上你写的路径即可
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
#可以进行MD5加密
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
2.同时也可以进行自定义的密码写法,在pom里面引入下面的jar:
<!-- 自定义验证MD5密码 -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>5.3.3.RELEASE</version>
</dependency>
3.在cas项目添加自己的文件夹,创建一个calss文件:
加入如下代码:
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.crypto.hash.SimpleHash;
import org.apache.shiro.util.ByteSource;
import org.springframework.security.crypto.password.PasswordEncoder;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.util.UUID;
//不一定得是实现这个PasswordEncoder,有很多方式
public class Autopassword implements PasswordEncoder {
/**
* 自定义密码加密该写的位置
* @param charSequence
* @return
*/
@Override
public String encode(CharSequence charSequence) {
try {
System.out.println("获取的密码为:"+charSequence);
//对数据进行md5加密
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(charSequence.toString().getBytes());
String pwd = new BigInteger(1, md.digest()).toString(16);//进行md5 16位的加密
System.out.println("进行了一次md5加密:"+pwd);
Object result = null;//加密完成后的结果
String hashMD5 = "MD5";//加密方式
Object salt = ByteSource.Util.bytes(pwd);//以MD5将密码加密一次后作为加盐的方式
Object requestpwd = charSequence;//用户输入密码
System.out.println("用户输入的密码为:"+requestpwd);
String addpwd = String.valueOf(requestpwd);
int addsaltcount = 2;//加密两次
result = new SimpleHash(hashMD5,addpwd,salt,addsaltcount);
String strresult = String.valueOf(result);//将密码转化成字符串类型
return strresult;
} catch (Exception e) {
//logger.error("对密码进行md5异常",e);
System.out.println("加密异常!");
e.printStackTrace();
}
return null;
}
/**
* 判断密码是否匹配
* @param charSequence 加密好的密码
* @param s 是输入的用户账号密码
* @return
*/
@Override
public boolean matches(CharSequence charSequence, String s) {
// 判断密码为空,直接返回false
if (StringUtils.isBlank(charSequence)) {
return false;
}
//调用上面的encode 对请求密码进行MD5处理
String pass = this.encode(charSequence);
//比较密码是否相等
return pass.equals(s);
}
}
修改application原来的md5加密方式,修改如下:
#加md5策略
#进行自定义加密需要在spring.factories里面加上你写的路径即可
#进行自定义校验密码
cas.authn.jdbc.query[0].passwordEncoder.type=org.hc.cas.Autopassword
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
#可以进行MD5加密
#cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
然后就可以使用自定义的密码校验的方式进行验证了。