前言,准备
cas自定义通过邮箱修改密码,这里的验证,点击邮箱链接之后还会输入密保问题。本文章有http和https两种验证邮箱。不必着急往后看。证书无非是SSL设置为true或者false;
1、在sso-server的resource下放入创建好的证书
2、cas这里的邮箱验证,数据表创建
这里的cas邮箱验证,是通过给用户发邮件,然后用户跳转到服务端,通过密保问题进行修改的。所以需要创建密保问题。这里是我测试的是通过用户名查找邮箱修改密码的。一会我们再测试一遍通过邮箱登录。修改密码
这里还有添加多个密保问题的,一会我们在通过截图观察
use casnew;
/*
密码重置问题表
*/
CREATE TABLE SYS_USER_QUESTION (
USERNAME VARCHAR(30) NOT NULL,
QUESTION VARCHAR(200) NOT NULL,
ANSWER VARCHAR(100) NOT NULL
);
---问题数据
INSERT INTO SYS_USER_QUESTION VALUES ('admin', '你的年龄是?', '24');
INSERT INTO SYS_USER_QUESTION VALUES ('HealerJean', '我的名字是?', 'HealerJean');
INSERT INTO SYS_USER_QUESTION VALUES ('zhangsan', '我在哪里工作?', 'guangzhou');
3、sso-server开始配置邮箱登录
1、首先我们需要一个邮箱,并且开启smpt验证。这里我用了QQ邮箱,有需要的朋友们自己弄哦,因为需要密码所以我就测试完本例就会关闭
2、开启证书验证
## ssl证书
server.ssl.enabled=true
server.ssl.key-store=classpath:tomcat.keystore
server.ssl.key-store-password=123456
server.ssl.keyAlias=passport.sso.com
**证书验证开启之后,下面的这个红色将会消失。
3、数据库验证和配置mail以及邮箱问题查询,我采用的是MD5写死直接验证
关键点:
#允许内置密码管理,配置了true,点击页面的重置密码才会有反应,跳转。也就是才有这个功能
cas.authn.pm.enabled=true
#新密码必须匹配表达式
cas.authn.pm.policyPattern=\\d{3,10}
具体配置:
# 7.1、MD5 密码直接校验,用于邮箱修改密码
#Query Database Authentication 数据库查询校验用户名开始
#查询账号密码sql,必须包含密码字段,
# 这里可以使用用户名或者邮箱来进行验证,根据数据字段如果是用户名则为username 邮箱则为email
cas.authn.jdbc.query[0].sql=select * from sys_user where username=?
#指定上面的sql查询字段名(必须)
cas.authn.jdbc.query[0].fieldPassword=password
#指定过期字段,1为过期,若过期不可用
cas.authn.jdbc.query[0].fieldExpired=expired
#为不可用字段段,1为不可用,需要修改密码
cas.authn.jdbc.query[0].fieldDisabled=disabled
#数据库方言hibernate的知识
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQL5Dialect
#数据库驱动
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
#数据库连接
cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/casnew?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=true