概述说明


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)来瞅瞅

轻松搭建CAS 5.x系列(5)-增加密码找回和密码修改功能的更多相关文章

  1. 轻松搭建CAS 5.x系列(8)-在CAS Server增加双因素认证(DUO版)

    概述说明 为了让系统更加安全,很多登录会加入双因素认证.何为双因素,如果把登陆作为开一扇门的话,那就是在原来的锁上再加一把锁,第二锁用新的钥匙,这样安全系数就更加高了. CAS是通过账号名和密码来认证 ...

  2. 轻松搭建CAS 5.x系列(6)-在CAS Server上增加OAuth2.0协议

    概述说明 CAS Server默认搭建出来,客户端程序只能按照CAS自身的协议接入.CAS的强大在于,有官方的插件,可以支持其他的协议.本章节就让CAS Server怎么增加OAuth2.0的登录协议 ...

  3. 轻松搭建CAS 5.x系列(9)-登录后显示通知信息

    概述说明 用户在账号名密码认证通过后,CAS可以跳转到登陆完成页面前,显示相关的通知页面. 搭建步骤 `1. 首先,您需要有个CAS Server端 如果您没有,可以按照我之前写的文章<轻松搭建 ...

  4. 轻松搭建CAS 5.x系列(7)-在CAS Server使用第三方帐号做认证

    概述说明 CAS除了使用自身数据库配置的帐号体系外,也可以使用第三方帐号来做认证. 比如实现如下类似的红色标注部分的登录效果: CAS自带了Facebook.GitHub.WordPress和CAS的 ...

  5. 轻松搭建CAS 5.x系列(2)-搭建HTTPS的SSO SERVER端

    概要说明 CAS要求,必须使用HTTPS的服务,否则就只等实现登录,无法实现单点登录.科普下HTTPS,网站有HTTP和HTTPS两种协议.HTTP是浏览器到网站之间是明文传输,比如你输入帐号名和密码 ...

  6. 轻松搭建CAS 5.x系列(3)-连接数据库,使用数据库表中的帐号做登录

    概要说明 前面的CAS SEVER中的登录帐号名是配置中写死的,实际情况中不太可能用这些方法.通常情况下,数据库的帐号名密码都是在数据库表中的,这样可以对登录帐号进行增删改的处理. 如果您对搭建固定帐 ...

  7. 轻松搭建CAS 5.x系列(4)-Java客户端程序接入CAS单点登录,Hello World版

    概述说明 按照本系列的前3篇文章描述的步骤,我们已经搭建好cas sso server.那应用程序怎么接入到实现sso呢? (如果您还没有搭建cas server,可以到<轻松搭建CAS 5.x ...

  8. 轻松搭建CAS 5.x系列文章

    轻松搭建CAS 5.x系列(1)-使用cas overlay搭建SSO SERVER服务端 轻松搭建CAS 5.x系列(2)-搭建HTTPS的SSO SERVER端 轻松搭建CAS 5.x系列(3)- ...

  9. 轻松搭建CAS 5.x系列(1)-使用cas overlay搭建SSO SERVER服务端

    概要说明 cas的服务端搭建有两种常用的方式:   1. 基于源码的基础上构建出来的   2. 使用WAR overlay的方式来安装 官方推荐使用第二种,配置管理方便,以后升级也容易.本文就是使用第 ...

随机推荐

  1. RDD java API使用

    1.RDD介绍:     RDD,弹性分布式数据集,即分布式的元素集合.在spark中,对所有数据的操作不外乎是创建RDD.转化已有的RDD以及调用RDD操作进行求值.在这一切的背后,Spark会自动 ...

  2. 123456123456#0#-----com.threeapp.xiongMaoPaoPao01----熊猫跑酷01

    com.threeapp.xiongMaoPaoPao01----熊猫跑酷01

  3. c#子线程执行完怎么通知主线程(转)

    定义一个委托实现回调函数 public delegate void CallBackDelegate(string message); 程序开始的时候 //把回调的方法给委托变量 CallBackDe ...

  4. (一)Rational Rose 2007 下载安装

    因为有画UML图的需求,所以得在电脑上安装Rational Rose.开始准备安装Rational Rose 2003,但是破解过程过于繁琐而且似乎一直遇到各种问题,就决定安装Rational Ros ...

  5. ORM学习笔记

    19周 11章 django ORM基本创建类型以及生成数据库结构 类型: dbfirst :通过数据库创建类 codefirst:先创建类 再创建数据库 --最常用 ORM的意思: 通过类创建数据库 ...

  6. jQuery插件—获取URL参数

    做的项目中需要用到通过JS获取GET参数,上网找了一下,找到如下插件: 例如 当前你的URL是: http://www.xxx.com/index.php?test=1&kk=2 //如果想获 ...

  7. es6 关于map和for of的区别有哪些?

    1.es6  关于map和for of的区别有哪些? ——主要想了解一下性能方面的

  8. vue等单页面应用及其优缺点

    优点: Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件,核心是一个响应的数据绑定系统.MVVM.数据驱动.组件化.轻量.简洁.高效.快速.模块友好. 缺点: 不支持低版本 ...

  9. ubuntu desktop 登录root账户

    有一些操作,登录root账户比较方便,但是ubuntu桌面版默认不允许这样,需要更改root账户的默认密码才可以登录,解决方法是按以下顺序输入: sudo passwd <你现在的用户的密码&g ...

  10. 【miscellaneous】【ARM-Linux开发】ARM平台基于嵌入式Linux Gstreamer 使用

    1). 简介 随着ARM平台性能的日益强大和嵌入式设备的发展,对于多媒体处理如音视频播放,摄像头,流媒体处理等需求也日益增多,本文就通过几个基于嵌入式Linux下多媒体应用的示例来简单展示下使用Gst ...