輕松搭建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','123456','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)來瞅瞅

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM