CAS单点登录-密码管理(十三)


上面的流程已经明确出一些东西,其中包括:

  • 根据用户名寻找邮箱/手机号

  • 问题数据查找

  • 邮箱/手机发送配置

  • 密码重置策略配置(修改密码接口,加密策略)

application.properties


#密码管理 开始

#允许内置密码管理

cas.authn.pm.enabled=true

#发送邮件

spring.mail.host=smtp.qq.com

spring.mail.port=465

#邮箱用户名

spring.mail.username=huang.wenbin@foxmail.com

#邮箱授权码

spring.mail.password=judnarjvmhsfbdji

spring.mail.testConnection=false

spring.mail.properties.mail.smtp.auth=true

#必须ssl

spring.mail.properties.mail.smtp.ssl.enable=true

#邮箱查找

#根据用户名查找问题

cas.authn.pm.jdbc.sqlSecurityQuestions=select question, answer from sys_user_question where username=?

#根据用户名查找邮箱

cas.authn.pm.jdbc.sqlFindEmail=select email from sys_user where username=?

cas.authn.pm.jdbc.sqlChangePassword=update sys_user set password=? where username=?

cas.authn.pm.jdbc.url=${cas.authn.jdbc.query[0].url}

cas.authn.pm.jdbc.user=${cas.authn.jdbc.query[0].user}

cas.authn.pm.jdbc.password=${cas.authn.jdbc.query[0].password}

cas.authn.pm.jdbc.dialect=${cas.authn.jdbc.query[0].dialect}

cas.authn.pm.jdbc.driverClass=${cas.authn.jdbc.query[0].driverClass}

#密码修改加密规则,这个必须要和原始密码加密规则一致

cas.authn.pm.jdbc.passwordEncoder.type=${cas.authn.jdbc.query[0].passwordEncoder.type}

cas.authn.pm.jdbc.passwordEncoder.characterEncoding=${cas.authn.jdbc.query[0].passwordEncoder.characterEncoding}

cas.authn.pm.jdbc.passwordEncoder.encodingAlgorithm=${cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm}

cas.authn.pm.jdbc.passwordEncoder.secret=${cas.authn.jdbc.query[0].passwordEncoder.secret}

#默认是false,不会提交update语句

cas.authn.pm.jdbc.autocommit=true

#重置信息 https://apereo.github.io/cas/5.1.x/installation/Configuration-Properties.html#password-management

cas.authn.pm.reset.from=${spring.mail.username}

#发送邮件标题

cas.authn.pm.reset.subject=SSO DEMO 重置密码

#邮件内容,必须要有%s,因为会生成一个连接并且带了token,否则无法打开链接,当然这个链接也和cas.server.prefix有关系

cas.authn.pm.reset.text=打开以下链接重置您的密码(SSO-DEMO): %s

#token失效分钟数

cas.authn.pm.reset.expirationMinutes=10

cas.authn.pm.reset.emailAttribute=mail

#是否开启问题回答

cas.authn.pm.reset.securityQuestionsEnabled=true

#新密码必须匹配表达式

cas.authn.pm.policyPattern=\d{3,10}

#密码管理 结束

注意要点

  1. 允许内置密码管理

  2. 邮箱配置

  3. 邮箱、问题、查找sql配置

  4. 修改密码sql配置

另外可能会怀疑为什么会有那些问题,因为在sso-server/src/main/resources/profile/dev/sql/data-dev.sql加入了以下数据

INSERT INTO SYS_USER_QUESTION VALUES (‘admin’, ‘使用过的密码是?’, ‘123’);

INSERT INTO SYS_USER_QUESTION VALUES (‘admin’, ‘你的年龄是?’, ‘24’);

INSERT INTO SYS_USER_QUESTION VALUES (‘zhangsan’, ‘我的名字是?’, ‘zhangsan’);

INSERT INTO SYS_USER_QUESTION VALUES (‘zhangsan’, ‘我在哪里工作?’, ‘guangzhou’);

效果

打开登录页,点击登录按钮下发的重置密码按钮

这里写图片描述

邮箱收取打开验证

这里写图片描述

打开验证并回答问题

这里写图片描述

提交修改

这里写图片描述

任务完成

这里写图片描述

另外:由于已经发布的代码默认提交是false,导致不能修改密码成功请添加以下配置 cas.authn.pm.jdbc.autocommit=true

下载代码尝试:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 其他版本可以到GitHub或者码云查看

结语

小编也是很有感触,如果一直都是在中小公司,没有接触过大型的互联网架构设计的话,只靠自己看书去提升可能一辈子都很难达到高级架构师的技术和认知高度。向厉害的人去学习是最有效减少时间摸索、精力浪费的方式。

我们选择的这个行业就一直要持续的学习,又很吃青春饭。

虽然大家可能经常见到说程序员年薪几十万,但这样的人毕竟不是大部份,要么是有名校光环,要么是在阿里华为这样的大企业。年龄一大,更有可能被裁。

送给每一位想学习Java小伙伴,用来提升自己。

在这里插入图片描述

本文到这里就结束了,喜欢的朋友可以帮忙点赞和评论一下,感谢支持!
精力浪费的方式。

我们选择的这个行业就一直要持续的学习,又很吃青春饭。

虽然大家可能经常见到说程序员年薪几十万,但这样的人毕竟不是大部份,要么是有名校光环,要么是在阿里华为这样的大企业。年龄一大,更有可能被裁。

送给每一位想学习Java小伙伴,用来提升自己。

[外链图片转存中…(img-xnsJDKC8-1716572056240)]

本文到这里就结束了,喜欢的朋友可以帮忙点赞和评论一下,感谢支持!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值