概述说明


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分别是发送邮件的帐号和密码,

您填写您自己的发送邮件帐号和密码

该配置具体的含义,请参见

http://www.cassso-china.cn/apereo_github_cas_5.2/apereo.github.io/cas/5.2.x/installation/Configuration-Properties.html#password-management

-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;

参考文章


1. CAS中文文档站点#密码管理

2. CAS中文文档站点#邮件发送配置

3. CAS中文文档站点#密码管理配置说明

4. CAS中文文档站点#JDBC版的密码管理

最后,大家想更多CAS了解的话,可以来CAS中文文档站点(http://www.cassso-china.cn)来瞅瞅

最新文章

  1. 分页实现:Offset-Fetch
  2. Flash动画
  3. Java用户线程和守护线程
  4. 保存会话数据——session学习
  5. 纯css3鼠标经过图片显示描述特效
  6. BZOJ 4236: JOIOJI MAP
  7. Android_硬编码设置TextView字体大小
  8. 单篇文章JS模拟分页
  9. swift和objc之對比
  10. codeforces 659E . New Reform 强连通
  11. 单实例支撑每天上亿个请求的SSDB
  12. Google Maps Android API v2 (1)- 入门
  13. 每日冲刺报告——Day3(Java-Team)
  14. [转帖]Docker save and load镜像保存
  15. SQL SERVER 2012/ 2014 分页,用 OFFSET,FETCH NEXT改写ROW_NUMBER的用法(转)
  16. nginx代理服务器3--高可用(keepalived)
  17. 隐马尔可夫(HMM)模型
  18. sqlserver被锁的表以及如何解锁
  19. Consul 架构(译)
  20. kCGImagePropertyExifDictionary 引用错误

热门文章

  1. 【转】Linux下软件安装的几种方式
  2. 艺赛旗RPA谷歌浏览器拾取
  3. python __new__
  4. SQL-W3School-函数:SQL LEN() 函数
  5. 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_10-前端显示当前用户-jwt查询接口
  6. QML访问C++类内部
  7. Django和Flask这两个框架对比
  8. 阿里fastjson工具类
  9. 123457123457#0#-----com.threeapp.mouseRunner01----儿童老鼠跑酷游戏
  10. Mac下载工具软件提示损坏