CAS 4.2.1单点登录(四) 密码加密之MD5加盐

这里只用MD5加盐的方式对密码进行加密,为了提高安全性,盐值采用的是用户名+一个从数据库中获取的字段salt

密码比对的逻辑是在QueryDatabaseAuthenticationHandlerauthenticateUsernamePasswordInternal方法中,因此加密操作如下:

1.自定义一个类MyQueryDatabaseAuthenticationHandler

该类与QueryDatabaseAuthenticationHandler基本相同
原类的写法是

@Component("queryDatabaseAuthenticationHandler")
public class QueryDatabaseAuthenticationHandler extends AbstractJdbcUsernamePasswordAuthenticationHandler {
   
   

    @NotNull
    private String sql;

    @Override
    protected final HandlerResult authenticateUsernamePasswordInternal(final UsernamePasswordCredential credential)
            throws GeneralSecurityException, PreventedException {
   
   

        if (StringUtils.isBlank(this.sql) || getJdbcTemplate() == null) {
   
   
            throw new GeneralSecurityException("Authentication handler is not configured correctly");
        }

        final String username = credential.getUsername();
        final String encryptedPassword = this.getPasswordEncoder().encode(credential.getPassword());
        try {
   
   
            final String dbPassword = getJdbcTemplate().queryForObject(this.sql, String.class, username);
            if (!dbPassword.equals(encryptedPassword)) {
   
   
                throw new FailedLoginException("Password does not match value on record.")<
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值