springboot集成cas5.3使⽤JDBC认证并实现⾃定义加密算法
今天我们讲解⼀下CAS的认证⽅式,有JDBC认证、⽩名单(Whitelist)认证、⿊名单(Blacklist)认证、认证、Rest认证。
⽬前只针对JDBC认证讲解,更多抽时间更新。
1、JDBC认证
在前⾯我们设计了⼀个user表,表的字段为:
字段名字段类型备注
id bigint ID
username varchar⽤户名
password varchar⽤户密码
expired bigint过期字段,1为过期,需修改密码
disabled bigint不可⽤字段,1为不可⽤,禁⽤
常⽤单向加密算法:MD5、SHA、HMAC。
⼀般我们常⽤的加密算法就这⼏种。在JDBC认证中我们也可以选择配置加密算法,加密算法⼀般为上⾯的三种,MD5、SHA、HMAC,加密类型为NONE|DEFAULT|STANDARD|BCRYPT|SCRYPT|PBKDF2这⼏种,我们在配置⽂件中选择加密类型,指定加密算法。
前⾯配置不变指定JDBC配置,后⾯的配置为密码加密策略,配置如下:
然后我们启动应⽤。当我们运⾏起CAS,输⼊原来的⽤户名和密码——admin/123456,并不能登录,因为我们更改密码验证为MD5加密模式了。将123456使⽤md5加密后,填⼊数据库,再次登录,可以发现登录成功。由此验证我们加密成功!### JDBC 配置##查询账号密码SQL ,必须包含密码字段cas.authn.jdbc.query [0].sql=select * from 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 ://127.0.0.1:3306/cas ?useUnicode=true &characterEncoding=UTF-8&autoReconnect=true&useSSL=false #数据库dialect 配置cas.authn.jdbc.query [0].dialect=org.hiber
nate.dialect.MySQLDialect #数据库⽤户名cas.authn.jdbc.query [0].user=root #数据库⽤户密码cas.authn.jdbc.query [0].password=123#数据库事务⾃动提交cas.authn.jdbc.query [0].autocommit=false #数据库驱动cas.authn.jdbc.query [0].sql.jdbc.Driver #超时配置cas.authn.jdbc.query [0].idleTimeout=5000#默认加密策略,通过encodingAlgorithm 来指定算法,默认NONE 不加密# NONE|DEFAULT|STANDARD|BCRYPT|SCRYPT|PBKDF2cas.authn.jdbc.query [0].pe=DEFAULT # 字符类型cas.authn.jdbc.query [0].passwordEncoder.characterEncoding=UTF -8# 加密算法cas.authn.jdbc.query [0].dingAlgorithm=MD5# 加密盐#cas.authn.jdbc.query[0].passwordEncoder.secret=# 加密字符长度#cas.authn.jdbc.query[0].passwordEncoder.strength=16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
接着我们再新增⽤户tongyao、zhangsan,密码分别为⽤户名md5加密,⽽tongyao的expired为1。如下:
因此当我们登录tongyao、zhangsan⽤户时,将会有需要更改密码和禁⽤提⽰。
除此之外如果我们要⾃定义加密类型,就需要实现org.pto.password.PasswordEncoder接⼝,并且把类名配置在pe。
这⾥配置为⾃定义加密,新建类MyPasswordEncoder。
更改配置为:
更改tongyao⽤户密码为11aa,启动应⽤,根据加密算法只要我们登录输⼊密码11即可验证成功。
如果要密码⽆加密,调整pe=NONE。
如果要加密策略为SHA,调整dingAlgorithm=SHA。package ;import PasswordEncoder ;
/** * @author tongyao */public class MyPasswordEncoder implements PasswordEncoder { @Override public String encode (CharSequence charSequence ) { // charSequence 为输⼊的⽤户密码 return charSequence .toString (); } @Override public boolean matches (CharSequence charSequence , String str ) { // 当encode ⽅法返回不为null 时,matches ⽅法才会调⽤,charSequence 为encode 返回的字符串 // str 字符串为数据库中密码字段返回的值 String encodeStr = charSequence .toString () + "aa"; if (encodeStr .equals (str )) { return true ; } return false ; }}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26cas .authn .jdbc .query [0].passwordEncoder .type =MyPasswordEncoder
springboot推荐算法1
到此JDBC的认证⽅式我们就讲解完毕了,关于更多的使⽤参考⽂档:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论