轻松搭建CAS 5.x系列(5)-增加密码找回和密码修改功能
概述说明
CAS内置了密码找回和密码修改的功能; 密码找回功能是,系统会吧密码重置的连接通过邮件或短信方式发送给用户,用户点击链接后就可以重置密码,cas还支持预留密码重置的问题,只有回答对了,才可以重置密码;系统可配置密码重置后,是否自动登录; 密码修改功能是,用户登录后输入新密码即可完成密码修改。
安装步骤
`1. 首先,搭建好cas sso server
您需要按照《轻松搭建CAS 5.x系列文章》系列的前3篇文章
-2. 数据库增加用户的email字段和密码找回的安全问题表
- --创建数据库表空间
- USE test_cas;
- --创建帐号信息表
- DROP TABLE IF EXISTS `cas_user_base`;
- CREATE TABLE `cas_user_base` (
- `id` INT(11) NOT NULL AUTO_INCREMENT,
- `user_name` VARCHAR(45) DEFAULT NULL,
- `user_psd` VARCHAR(45) DEFAULT NULL,
- `user_email` VARCHAR(255) DEFAULT NULL,
- PRIMARY KEY (`id`)
- );
- --插入登录帐号数据
- INSERT INTO `cas_user_base` VALUES (1,'admin','','chenshiming0802@163.com');
- DROP TABLE IF EXISTS `cas_user_psdquestion`;
- CREATE TABLE `cas_userpsd_question` (
- `id` INT(11) NOT NULL AUTO_INCREMENT,
- `user_id` INT(11) NOT NULL ,
- `question` VARCHAR(255) DEFAULT NULL,
- `answer` VARCHAR(255) DEFAULT NULL,
- PRIMARY KEY (`id`)
- );
- --插入登录帐号数据
- INSERT INTO `cas_user_psdquestion` VALUES (1,1,'Your Name','jpeanut');
-3. 在pom.xml增加依赖包cas-server-support-pm-jdbc
- <!-- Password Management JDBC Begin -->
- <dependency>
- <groupId>org.apereo.cas</groupId>
- <artifactId>cas-server-support-pm-jdbc</artifactId>
- <version>${cas.version}</version>
- </dependency>
- <!-- Password Management JDBC End -->
-4. application.properties增加密码找回的配置
(该文件所在目录:D:\casoverlay\cas-overlay-template\src\main\resources)
- cas.authn.pm.jdbc.sqlSecurityQuestions=SELECT t2.question,t2.answer FROM cas_user_base t1,cas_userpsd_question t2 WHERE t1.id=t2.user_id AND t1.user_name=?
- cas.authn.pm.jdbc.sqlFindEmail=SELECT t1.user_email FROM cas_user_base t1 WHERE t1.user_name=?
- cas.authn.pm.jdbc.sqlChangePassword=UPDATE cas_user_base SET user_psd=? WHERE user_name=?
- cas.authn.pm.jdbc.healthQuery= SELECT 1
- cas.authn.pm.jdbc.isolateInternalQueries=false
- cas.authn.pm.jdbc.url=jdbc:mysql://localhost:3306/test_cas?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=UTC
- cas.authn.pm.jdbc.failFastTimeout=1
- cas.authn.pm.jdbc.isolationLevelName=ISOLATION_READ_COMMITTED
- #cas.authn.pm.jdbc.dialect=org.hibernate.dialect.HSQLDialect
- cas.authn.pm.jdbc.dialect=org.hibernate.dialect.MySQLDialect
- cas.authn.pm.jdbc.leakThreshold=10
- cas.authn.pm.jdbc.propagationBehaviorName=PROPAGATION_REQUIRED
- cas.authn.pm.jdbc.batchSize=1
- cas.authn.pm.jdbc.user=root
- cas.authn.pm.jdbc.ddlAuto=create-drop
- cas.authn.pm.jdbc.maxAgeDays=180
- cas.authn.pm.jdbc.password=
- cas.authn.pm.jdbc.autocommit=false
- #cas.authn.pm.jdbc.driverClass=org.hsqldb.jdbcDriver
- cas.authn.pm.jdbc.driverClass=com.mysql.jdbc.Driver
- cas.authn.pm.jdbc.idleTimeout=5000
- cas.authn.pm.jdbc.dataSourceName=
- cas.authn.pm.jdbc.dataSourceProxy=false
- cas.authn.pm.jdbc.properties.propertyName=propertyValue
- spring.mail.host=smtp.163.com
- spring.mail.port=25
- spring.mail.username=chenshiming0802@163.com
- spring.mail.password=xxxxxxx #请输入发送邮件的密码
- spring.mail.testConnection=true
- spring.mail.properties.mail.smtp.auth=true
- spring.mail.properties.mail.smtp.starttls.enable=true
- cas.authn.pm.enabled=true
- # Minimum 8 and Maximum 10 characters at least 1 Uppercase Alphabet, 1 Lowercase Alphabet, 1 Number and 1 Special Character
- cas.authn.pm.policyPattern=^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&])[A-Za-z\\d$@$!%*?&]{8,10}
- cas.authn.pm.reset.text=Reset your password with this link: %s
- cas.authn.pm.reset.subject=Password Reset Request
- cas.authn.pm.reset.from=chenshiming0802@163.com
- cas.authn.pm.reset.expirationMinutes=1
- cas.authn.pm.reset.emailAttribute=mail
- cas.authn.pm.reset.securityQuestionsEnabled=true
- # Automatically log in after successful password change
- cas.authn.pm.autoLogin=false
- # Used to sign/encrypt the password-reset link
- cas.authn.pm.reset.crypto.encryption.key=
- cas.authn.pm.reset.crypto.signing.key=
- cas.authn.pm.reset.crypto.enabled=true
spring.mail.username和spring.mail.password分别是发送邮件的帐号和密码,
您填写您自己的发送邮件帐号和密码
该配置具体的含义,请参见
-5. 好了,可以打包发布了
- mvn package
打包如果出现错误 Failure to find org.apereo.cas:cas-server-support-pm-jdbc:jar:5.1.9
可以到看下《CAS 5.x搭建常见问题系列(3).Failure to find org.apereo.cas:cas-server-support-pm-jdbc:jar:5.1.9》
功能演示
1. 重启服务器后
访问https://cas.example.org:8443/cas/login
-2. 点击Reset your password
-3. 输入需要找回的帐号名
此处可输入admin,点击确定
-4. 此时您应该收到如下邮件
-5. 点击右键中的重置链接
显示安全问题
-6.输入安全问题答案后,
显示新密码输入界面
your name输入:jpeanut
your city输入:shanghai
-7. 那再来看下密码修改
在登录界面选择change password,
登录功能后,即进入密码修改功能
以上就是CAS内置的密码管理的功能
当然,如果内置的密码管理的功能无法满足项目的需求,也可以自行开发后整合到CAS;
参考文章
最后,大家想更多CAS了解的话,可以来CAS中文文档站点(http://www.cassso-china.cn)来瞅瞅
轻松搭建CAS 5.x系列(5)-增加密码找回和密码修改功能的更多相关文章
- 轻松搭建CAS 5.x系列(8)-在CAS Server增加双因素认证(DUO版)
概述说明 为了让系统更加安全,很多登录会加入双因素认证.何为双因素,如果把登陆作为开一扇门的话,那就是在原来的锁上再加一把锁,第二锁用新的钥匙,这样安全系数就更加高了. CAS是通过账号名和密码来认证 ...
- 轻松搭建CAS 5.x系列(6)-在CAS Server上增加OAuth2.0协议
概述说明 CAS Server默认搭建出来,客户端程序只能按照CAS自身的协议接入.CAS的强大在于,有官方的插件,可以支持其他的协议.本章节就让CAS Server怎么增加OAuth2.0的登录协议 ...
- 轻松搭建CAS 5.x系列(9)-登录后显示通知信息
概述说明 用户在账号名密码认证通过后,CAS可以跳转到登陆完成页面前,显示相关的通知页面. 搭建步骤 `1. 首先,您需要有个CAS Server端 如果您没有,可以按照我之前写的文章<轻松搭建 ...
- 轻松搭建CAS 5.x系列(7)-在CAS Server使用第三方帐号做认证
概述说明 CAS除了使用自身数据库配置的帐号体系外,也可以使用第三方帐号来做认证. 比如实现如下类似的红色标注部分的登录效果: CAS自带了Facebook.GitHub.WordPress和CAS的 ...
- 轻松搭建CAS 5.x系列(2)-搭建HTTPS的SSO SERVER端
概要说明 CAS要求,必须使用HTTPS的服务,否则就只等实现登录,无法实现单点登录.科普下HTTPS,网站有HTTP和HTTPS两种协议.HTTP是浏览器到网站之间是明文传输,比如你输入帐号名和密码 ...
- 轻松搭建CAS 5.x系列(3)-连接数据库,使用数据库表中的帐号做登录
概要说明 前面的CAS SEVER中的登录帐号名是配置中写死的,实际情况中不太可能用这些方法.通常情况下,数据库的帐号名密码都是在数据库表中的,这样可以对登录帐号进行增删改的处理. 如果您对搭建固定帐 ...
- 轻松搭建CAS 5.x系列(4)-Java客户端程序接入CAS单点登录,Hello World版
概述说明 按照本系列的前3篇文章描述的步骤,我们已经搭建好cas sso server.那应用程序怎么接入到实现sso呢? (如果您还没有搭建cas server,可以到<轻松搭建CAS 5.x ...
- 轻松搭建CAS 5.x系列文章
轻松搭建CAS 5.x系列(1)-使用cas overlay搭建SSO SERVER服务端 轻松搭建CAS 5.x系列(2)-搭建HTTPS的SSO SERVER端 轻松搭建CAS 5.x系列(3)- ...
- 轻松搭建CAS 5.x系列(1)-使用cas overlay搭建SSO SERVER服务端
概要说明 cas的服务端搭建有两种常用的方式: 1. 基于源码的基础上构建出来的 2. 使用WAR overlay的方式来安装 官方推荐使用第二种,配置管理方便,以后升级也容易.本文就是使用第 ...
随机推荐
- Alpha项目冲刺! Day3-产出
各个成员今日完成的任务 林恩:任务分工,博客撰写,完善设置等模块 杨长元:安卓本地数据库基本建立 李震:完成注册页面 胡彤:完善服务端 寇永明:画图,学习 王浩:画图,学习 李杰:画图,学习 各个成员 ...
- case设计及验证:入口+页面+展示
测试个性CB问题, 功能整体结构为:入口+页面+展示 总结: 1. 产品文档为主,其次是服务端接口返回.数据结构及字段值确认.结合实际场景检查是否有遗漏或不合理. 2. 以字段为维度,每个字段的检查点 ...
- Python JSON 字符串 转 json 基本使用
字符串 转 json import json jsonData = '{"a":1,"b":2,"c":3,"d":4 ...
- Django 测试开发3 数据模型models和admin管理工具
参考:https://blog.csdn.net/weixin_44510615/article/details/89425412 1.Django模型字段常用类型: IntegerField : 整 ...
- linux几种传输方式与拷贝方式的性能分析
本文记录linux系统中文件传输的多种方式,留作备忘.linux中文件传输的方式有ftp,scp,rsync,rz,sz等,但各个工具的功能又有所区别: FTP : FTP是文件服务器,可实现文件的上 ...
- window 下 某个端口被占用
window 下 某个端口被占用 1. 开始—->运行—->cmd,或者是window+R组合键,调出命令窗口: 2.输入命令:netstat -ano,列出所有端口的情况.在列表中我们观 ...
- php实现手机定位功能的实例
最近在做通过定位手机用户,进行消息推送,经过分析最终做法如下 mobile.php文件 当用户当手机访问该页面时,通过实现页面表单隐藏封装自动提交获取手机浏览器经纬度并post给服务器 1 2 3 4 ...
- Python与C/C++相互调用(python2 调c++那个试了ok)
一.问题 Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结. 二.Python调用C/C++ 1.Python调用C动态链接库 Python调用C库比较简单,不经过 ...
- C#子线程执行完后通知主线程(转)
其实这个比较简单,子线程怎么通知主线程,就是让子线程做完了自己的事儿就去干主线程的转回去干主线程的事儿. 那么怎么让子线程去做主线程的事儿呢,我们只需要把主线程的方法传递给子线程就行了,那么传递方法 ...
- 浏览器打印出一段unicode码,汉字无法正常显示
处理办法:http://tool.chinaz.com/tools/unicode.aspx:unicode转中文就可以啦