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

看到这里我们目前已经把cas版本升级到5.1.5

再次强调一下,所有的博客都有相关的源码,可以在博文的底部进行下载测试。

在单点登录系统中,少不了修改密码、忘记密码、重置密码、找回密码的功能,哪怕这个过程不是sso来胜任,肯定有一个模块甚至一个系统来做这个密码管理功能,但刚刚好cas自带了这个密码管理功能,非常简单也很好理解

先说一下我们日常的一些重置密码做法:

  1. 输入用户名/邮箱/手机号(其实就是确定到一个用户)
  2. 发送邮件/验证码进行验证
  3. 邮箱验证(打开链接)/手机验证(输入验证码)
  4. 加强验证回答问题(可无)
  5. 输入新密码,重置

但像qq那样,找回密码功能无非是多了一个审核功能,其实一般来说,邮箱/短信验证加上回答问题已经满足日常的需求了

这张不啰嗦那么多,直接来实战~

密码管理特性

cas目前已经支持很多常用的特性,那么密码管理也是支持得不错的

  • 邮件发送验证
  • 短信发送验证
  • 问题回答验证
  • 忘记密码/重置密码UI

那么我们挑邮件发送验证问题回答验证来进行简单的罗列一下,好给大家一个简单的介绍,当然了,这些界面是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或者码云查看

发现一些意外的事情可以考虑翻翻前面的博客进行学习哦

作者联系方式

如果技术的交流或者疑问可以联系或者提出issue。

邮箱:huang.wenbin@foxmail.com

QQ: 756884434 (请注明:SSO-CSDN)

CAS单点登录-密码管理(十三)相关推荐

  1. CAS单点登录(五)——Service配置及管理

    在上一节我们讲述了CAS中关于自定义认证登录策略,对CAS中关于自定义登录配置的方案,校验策略有了一定的了解,如果忘记了可以去复习一下------CAS单点登录(四)--自定义认证登录策略.这节本来该 ...

  2. 爆破专栏丨Spring Security系列教程之实现CAS单点登录上篇-概述

    作者:千锋一一哥 前言 从本章节开始,一一哥 会给各位讲解一个很常见也很重要的知识点,就是单点登录!现在的大型分布式项目,基本都会考虑实现单点登录,而且现在网上也有很多单点登录的实现方案.开源项目,但 ...

  3. CAS 单点登录/登出 系统

    前言: 在我们的实际开发中,更多的是采用分布式系统.那么问题来了,对于分布式系统的登录问题,我们如何解决呢? 如果说我们在每一个系统中都要进行一次登录,那么用户体验度也就差的没法用了.以京东商城为例, ...

  4. CAS 单点登录使用详解

    ============================================================================== 开发环境 :MyEclipse6.5+to ...

  5. cas单点登录学习笔记 .

    CAS 单点登录使用详解 ============================================================================== 开发环境 :My ...

  6. 一站式登录授权系统(单点登录+授权管理)

    项目地址 https://github.com/minlingchao1/auth-center 项目说明 auth-center是一个轻量级的权限管理系统.其核心目标是实现公司内部各个系统的权限的集 ...

  7. CAS单点登录原理解析及相关配置

    1.基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从Cookie中 ...

  8. CAS单点登录(八)——多属性返回

    在前面我们讲解了在CAS中关于如何自定义验证码以及自定义错误信息的配置,对于CAS的自定义有了更进一步的了解,如果忘记了,可以去复习一下CAS单点登录(七)--自定义验证码以及自定义错误信息. 今天我 ...

  9. java培训爆破专栏之Spring Security系列教程之实现CAS单点登录上篇-概述

    作者:千锋一一哥 前言 从本章节开始,一一哥 会给各位讲解一个很常见也很重要的知识点,就是单点登录!现在的大型分布式项目,基本都会考虑实现单点登录,而且现在网上也有很多单点登录的实现方案.开源项目,但 ...

最新文章

  1. 举例说明html语言的结构,HTML语言的结构
  2. iptables_默认规则
  3. 初等数论--整除--线性组合与最大公因数之间的关系
  4. easyui打开新的选项卡_Easyui Tabs 标签页/选项卡_EasyUI 插件
  5. linux视频教程之vsftp_B
  6. 深入进货单-价格跟踪----宇然电脑公司管理软件
  7. drupal_Drupal,物联网和开放式硬件的交集
  8. asp多表查询并显示_高级子查询
  9. 关于私募基金高水位业绩报酬计提的N种方式!
  10. python秩和比综合评价代码记录
  11. 【嵌入式】基于SPI的M8266WIFI模块调试
  12. 【Eye-Tracking】一、眼动追踪概述
  13. 【硬件】电容和电感串联接地的作用
  14. mysql不等于的写法_mysql 不等于 符号写法
  15. android 系统重新安装程序,Android应用程序更新时的安装与卸载(调用系统方法)...
  16. TIA WinCC Professional入门经典(2) 创建画面与联合仿真
  17. NetApp FAS混合式Flash Array
  18. js的dom操作,onmouseover事件,onmouseleave事件,定时器
  19. he Enigma Protector一字节过注册
  20. GIF动图大小超出限制怎么压缩变小?

热门文章

  1. 大数据在金融行业的应用
  2. 算法实践:数独的基本解法
  3. 人人都需要知道的理财知识
  4. JETT(五)-支持Excel公式
  5. justjavac:从辍学到成为Deno核心代码贡献者,我的十年编程生涯
  6. android撕衣服案例解析
  7. 获取iOS设备唯一标识
  8. 鼠标到达a标签时变成手型
  9. 思维方式-《终身成长》书中的精髓:决定人与人之间巨大差距的,是你的思维模式。
  10. 电商盲返模式的核心玩法