CAS 5.3.1系列之支持JDBC認證登錄(二)
在項目中,我們肯定是不能用默認的靜態賬號密碼,所以我們需要實現對jdbc或者其它認證方式的支持,將cas-overlay-template-5.2\pom.xml復制到項目里,將application.properties復制到resources文件夾
<!--新增支持jdbc驗證-->
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-jdbc</artifactId>
<version>${cas.version}</version>
</dependency>
<!--自適配數據庫驅動,其中包括HSQLDB、Oracle、MYSQL、PostgreSQL、MariaDB、Microsoft SQL Server-->
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-jdbc-drivers</artifactId>
<version>${cas.version}</version>
</dependency>
注意5.3.1版本的cas-server-support-jdbc-drivers數據庫驅動是mysql8左右的,所以如果是mysql5版本的,就不使用自適配驅動,自己加上:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.27</version>
</dependency>
ok,然后需要在application.properties加上:
##
# JDBC Authentication
#
# 查詢賬號密碼SQL,必須包含密碼字段
cas.authn.jdbc.query[0].sql=select * from sys_user where username=?
# 指定上面的SQL查詢字段名(必須)
cas.authn.jdbc.query[0].fieldPassword=password
# 指定過期字段,1為過期,若過期不可用
cas.authn.jdbc.query[0].fieldExpired=expired
# 為不可用字段段,1為不可用,需要修改密碼
cas.authn.jdbc.query[0].fieldDisabled=disabled
# 數據庫連接
cas.authn.jdbc.query[0].url=jdbc:mysql://192.168.0.159:3306/jeeplatform?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8
# 數據庫dialect配置
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect
# 數據庫用戶名
cas.authn.jdbc.query[0].user=root
# 數據庫用戶密碼
cas.authn.jdbc.query[0].password=root
# 數據庫事務自動提交
cas.authn.jdbc.query[0].autocommit=false
# 數據庫驅動
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
# 超時配置
cas.authn.jdbc.query[0].idleTimeout=50000
# 默認加密策略,通過encodingAlgorithm來指定算法,默認NONE不加密
# NONE|DEFAULT|STANDARD|BCRYPT|SCRYPT|PBKDF2
cas.authn.jdbc.query[0].passwordEncoder.type=NONE
#cas.authn.jdbc.query[0].passwordEncoder.type=org.muses.jeeplatform.cas.authentication.encode.MD5PasswordEncoder
# 字符類型
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
# 加密算法
#cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
# 加密鹽
#cas.authn.jdbc.query[0].passwordEncoder.secret=
# 加密字符長度
#cas.authn.jdbc.query[0].passwordEncoder.strength=16
然后啟動項目,訪問,暫時不用密碼加密方式,如果要MD5密碼可以如下設置
# NONE|DEFAULT|STANDARD|BCRYPT|SCRYPT|PBKDF2
cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
也可以自定義加密方式:
import org.springframework.security.crypto.password.PasswordEncoder;
/**
* <pre>
* 自定義PasswordEncoder
* </pre>
*
* <pre>
* @author mazq
* 修改記錄
* 修改后版本: 修改人: 修改日期: 2020/04/24 17:02 修改內容:
* </pre>
*/
public class MD5PasswordEncoder implements PasswordEncoder {
@Override
public String encode(CharSequence charSequence) {
return charSequence.toString();
}
@Override
public boolean matches(CharSequence charSequence, String s) {
String encodeStr = charSequence.toString() + "aa";
if (encodeStr.equals(s)) {
return true;
}
return false;
}
}
然后修改配置:
cas.authn.jdbc.query[0].passwordEncoder.type=org.muses.jeeplatform.cas.authentication.encode.MD5PasswordEncoder
代碼例子參考:github下載鏈接
詳情可以參考官方文檔:https://apereo.github.io/cas/5.3.x/installation/Configuration-Properties.html
優質參考博客:
https://www.cnblogs.com/jpeanut/tag/CAS/
https://blog.csdn.net/anumbrella/category_7765386.html