CAS单点登录-密码管理(十三)
来源:互联网 发布:7.62口径秃鹰数据 编辑:程序博客网 时间:2024/06/06 21:47
CAS单点登录-密码管理(十三)
看到这里我们目前已经把cas版本升级到5.1.5
再次强调一下,所有的博客都有相关的源码,可以在博文的底部进行下载测试。
在单点登录系统中,少不了修改密码、忘记密码、重置密码、找回密码的功能,哪怕这个过程不是sso来胜任,肯定有一个模块甚至一个系统来做这个密码管理功能,但刚刚好cas自带了这个密码管理功能,非常简单也很好理解
先说一下我们日常的一些重置密码做法:
- 输入用户名/邮箱/手机号(其实就是确定到一个用户)
- 发送邮件/验证码进行验证
- 邮箱验证(打开链接)/手机验证(输入验证码)
- 加强验证回答问题(可无)
- 输入新密码,重置
但像qq那样,找回密码功能无非是多了一个审核功能,其实一般来说,邮箱/短信验证加上回答问题已经满足日常的需求了
这张不啰嗦那么多,直接来实战~
密码管理特性
cas目前已经支持很多常用的特性,那么密码管理也是支持得不错的
- 邮件发送验证
- 短信发送验证
- 问题回答验证
- 忘记密码/重置密码UI
那么我们挑邮件发送验证,问题回答验证来进行简单的罗列一下,好给大家一个简单的介绍,当然了,这些界面是cas提供的,我们在上线的时候的一般需要自定义一套,有文章姐简单介绍了一下自定义主题
实战
配置说明
上面的流程已经明确出一些东西,其中包括:
- 根据用户名寻找邮箱/手机号
- 问题数据查找
- 邮箱/手机发送配置
- 密码重置策略配置(修改密码接口,加密策略)
application.properties
#密码管理 开始#允许内置密码管理cas.authn.pm.enabled=true#发送邮件spring.mail.host=smtp.qq.comspring.mail.port=465#邮箱用户名spring.mail.username=huang.wenbin@foxmail.com#邮箱授权码spring.mail.password=judnarjvmhsfbdjispring.mail.testConnection=falsespring.mail.properties.mail.smtp.auth=true#必须sslspring.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-managementcas.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=10cas.authn.pm.reset.emailAttribute=mail#是否开启问题回答cas.authn.pm.reset.securityQuestionsEnabled=true#新密码必须匹配表达式cas.authn.pm.policyPattern=\\d{3,10}#密码管理 结束
注意要点
- 允许内置密码管理
- 邮箱配置
- 邮箱、问题、查找sql配置
- 修改密码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单点登录-密码管理(十三)
- CAS单点登录-Cas-Management(八)
- Cas单点登录(8)Cas记住密码功能
- 单点登录cas常见问题(十三) - 几个重要概念怎么理解?
- CAS单点登录-登录校验码(十七)
- CAS单点登录-单用户登录(十九)
- CAS单点登录(SSO)服务器配置
- CAS单点登录实现(C++版)
- CAS实现单点登录(SSO)
- CAS实现SSO(单点登录)
- CAS单点登录(SSO)服务器配置
- CAS实现单点登录(SSO)
- 多系统单点登录(CAS整合)
- cas单点登录(sso)简单Demo
- CAS单点登录-简介(一)
- CAS单点登录-配置中心(三)
- CAS单点登录-https配置(四)
- CAS单点登录-Service配置(七)
- PHP之设计模式(二)---基础篇
- C++ 高性能服务器网络框架设计细节
- 数据报告制作
- Linux下安装Tomcat服务器和部署Web应用
- PHP连接SQL SERVER 数据库 PHP连接MYSQL数据库并解决中文乱码问题。
- CAS单点登录-密码管理(十三)
- 【MySQL】查看mysql实时运行sql的工具–orztop
- virsh通过xml 创建虚拟机
- Java并发(5)深入分析java线程池框架及实现原理(二)
- ajax跨域获取php文件
- linux每天一命令: 用户组
- 阿里巴巴Java开发规约的IDEA插件使用
- 获取Android系统分享列表
- JDBI