From d50080ea5bf12a9b5e000ea595303f612d803679 Mon Sep 17 00:00:00 2001 From: smizrahi Date: Sun, 16 Oct 2022 14:46:19 +0200 Subject: [PATCH] feat(password-recovery): Add LDAP password recovery --- Documentation/SOGoInstallationGuide.asciidoc | 2 +- SoObjects/SOGo/LDAPSource.m | 71 +++++++++++++++++--- UI/WebServerResources/js/Main.js | 2 +- UI/WebServerResources/js/Main.js.map | 2 +- UI/WebServerResources/js/Main/Main.app.js | 4 +- 5 files changed, 65 insertions(+), 16 deletions(-) diff --git a/Documentation/SOGoInstallationGuide.asciidoc b/Documentation/SOGoInstallationGuide.asciidoc index 30a69127e..baf263f06 100644 --- a/Documentation/SOGoInstallationGuide.asciidoc +++ b/Documentation/SOGoInstallationGuide.asciidoc @@ -787,7 +787,7 @@ authentication and global address books. Multiple sources can be specified as an array of dictionaries. |S |SOGoPasswordRecoveryEnabled -|Boolean enable password recovery with secret question or secondary e-mail. Only for database user source. +|Boolean enable password recovery with secret question or secondary e-mail. |S |SOGoPasswordRecoveryDomains |List of domains where password recovery is enabled. If empty, enabled for all domains diff --git a/SoObjects/SOGo/LDAPSource.m b/SoObjects/SOGo/LDAPSource.m index 28981e0c2..a307b6232 100644 --- a/SoObjects/SOGo/LDAPSource.m +++ b/SoObjects/SOGo/LDAPSource.m @@ -708,6 +708,39 @@ groupObjectClasses: (NSArray *) newGroupObjectClasses return didChange; } +- (BOOL) _ldapAdminModifyAttribute: (NSString *) theAttribute + withValue: (NSString *) theValue + userDN: (NSString *) theUserDN + connection: (NGLdapConnection *) bindConnection +{ + NGLdapModification *mod; + NGLdapAttribute *attr; + NSArray *changes; + + BOOL didChange; + + attr = [[NGLdapAttribute alloc] initWithAttributeName: theAttribute]; + [attr addStringValue: theValue]; + + mod = [NGLdapModification replaceModification: attr]; + + changes = [NSArray arrayWithObject: mod]; + + if ([bindConnection bindWithMethod: @"simple" + binddn: _bindDN + credentials: _password]) + { + didChange = [bindConnection modifyEntryWithDN: theUserDN + changes: changes]; + } + else + didChange = NO; + + RELEASE(attr); + + return didChange; +} + /** * Change a user's password. * @param login the user's login name. @@ -787,20 +820,38 @@ groupObjectClasses: (NSArray *) newGroupObjectClasses if (encryptedPass != nil) { - if ([bindConnection bindWithMethod: @"simple" + if (!passwordRecovery) { + if ([bindConnection bindWithMethod: @"simple" binddn: userDN credentials: oldPassword]) - { - didChange = [self _ldapModifyAttribute: @"userPassword" - withValue: encryptedPass - userDN: userDN - password: oldPassword - connection: bindConnection]; - if (didChange) { - *perr = PolicyNoError; + didChange = [self _ldapModifyAttribute: @"userPassword" + withValue: encryptedPass + userDN: userDN + password: oldPassword + connection: bindConnection]; + if (didChange) + { + *perr = PolicyNoError; + } } - } + } else { + // Password recovery + // As old password is unknown, we use admin binding + if ([bindConnection bindWithMethod: @"simple" + binddn: _bindDN + credentials: _password]) + { + didChange = [self _ldapAdminModifyAttribute: @"userPassword" + withValue: encryptedPass + userDN: userDN + connection: bindConnection]; + if (didChange) + { + *perr = PolicyNoError; + } + } + } } } diff --git a/UI/WebServerResources/js/Main.js b/UI/WebServerResources/js/Main.js index 382b36af3..d4170ff10 100644 --- a/UI/WebServerResources/js/Main.js +++ b/UI/WebServerResources/js/Main.js @@ -1,2 +1,2 @@ -!function(){"use strict";angular.module("SOGo.MainUI",["SOGo.Common","SOGo.Authentication"]);function e(e,o,s,r,n,a,i,t){var d=this;this.$onInit=function(){this.creds={username:o.cookieUsername,password:null,domain:null,rememberLogin:angular.isDefined(o.cookieUsername)&&0{d.retrievePasswordRecoveryEnabled(),this.passwordRecovery.passwordRecoveryLinkTimer=null},2e3)},this.retrievePasswordRecoveryEnabled=function(){(this.creds.username||this.creds.domain)&&a.passwordRecoveryEnabled(this.creds.username,this.creds.domain).then(function(e){d.passwordRecovery.passwordRecoveryMailDomain=e,d.passwordRecovery.passwordRecoveryEnabled=!0},function(){d.passwordRecovery.passwordRecoveryEnabled=!1})}}e.$inject=["$scope","$window","$timeout","Dialog","$mdDialog","Authentication","sgFocus","sgRippleClick"],angular.module("SOGo.MainUI").controller("LoginController",e)}(); +!function(){"use strict";angular.module("SOGo.MainUI",["SOGo.Common","SOGo.Authentication"]);function e(e,o,s,r,n,a,i,t){var d=this;this.$onInit=function(){this.creds={username:o.cookieUsername,password:null,domain:null,rememberLogin:angular.isDefined(o.cookieUsername)&&0{d.retrievePasswordRecoveryEnabled(),this.passwordRecovery.passwordRecoveryLinkTimer=null},2e3)},this.retrievePasswordRecoveryEnabled=function(){(this.creds.username||this.creds.domain)&&a.passwordRecoveryEnabled(this.creds.username,this.creds.domain).then(function(e){d.passwordRecovery.passwordRecoveryMailDomain=e,d.passwordRecovery.passwordRecoveryEnabled=!0},function(){d.passwordRecovery.passwordRecoveryEnabled=!1})}}e.$inject=["$scope","$window","$timeout","Dialog","$mdDialog","Authentication","sgFocus","sgRippleClick"],angular.module("SOGo.MainUI").controller("LoginController",e)}(); //# sourceMappingURL=Main.js.map \ No newline at end of file diff --git a/UI/WebServerResources/js/Main.js.map b/UI/WebServerResources/js/Main.js.map index 4d7cf0998..6cc9b773e 100644 --- a/UI/WebServerResources/js/Main.js.map +++ b/UI/WebServerResources/js/Main.js.map @@ -1 +1 @@ -{"version":3,"file":"Main.js","sources":["Main/Main.app.js"],"names":["angular","module","LoginController","$scope","$window","$timeout","Dialog","$mdDialog","Authentication","focus","rippleDo","vm","this","$onInit","creds","username","cookieUsername","password","domain","rememberLogin","isDefined","length","test","location","search","language","loginState","verificationCodePattern","passwords","newPassword","newPasswordConfirmation","oldPassword","passwordRecovery","passwordRecoveryEnabled","passwordRecoveryQuestionKey","passwordRecoveryQuestion","passwordRecoveryMode","passwordRecoveryQuestionAnswer","passwordRecoveryToken","passwordRecoveryLinkTimer","passwordRecoverySecondaryEmailText","passwordRecoveryMailDomain","showLogin","queryString","window","let","token","URLSearchParams","get","pathname","indexOf","tokenArray","replace","split","info","JSON","parse","atob","retrievePasswordRecoveryEnabled","login","then","data","totpmissingkey","totpdisabled","cn","url","continueLogin","msg","value","string","error","errorMessage","grace","l","expire","Math","round","passwordexpired","restoreLogin","verificationCode","isInPasswordRecoveryMode","passwordRecoveryAbort","href","reload","showAbout","$event","AboutDialogController","closeDialog","hide","show","targetEvent","templateUrl","controller","controllerAs","$inject","changeLanguage","ApplicationBaseURL","hello","form","canChangePassword","$setValidity","changePassword","passwordRecoveryInfo","mode","secretQuestionLabel","secretQuestion","obfuscatedRecoveryEmail","passwordRecoveryEmail","passwordRecoveryCheck","usernameChanged","clearTimeout","setTimeout","mailDomain"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Main.js","sources":["Main/Main.app.js"],"names":["angular","module","LoginController","$scope","$window","$timeout","Dialog","$mdDialog","Authentication","focus","rippleDo","vm","this","$onInit","creds","username","cookieUsername","password","domain","rememberLogin","isDefined","length","test","location","search","language","loginState","verificationCodePattern","passwords","newPassword","newPasswordConfirmation","oldPassword","passwordRecovery","passwordRecoveryEnabled","passwordRecoveryQuestionKey","passwordRecoveryQuestion","passwordRecoveryMode","passwordRecoveryQuestionAnswer","passwordRecoveryToken","passwordRecoveryLinkTimer","passwordRecoverySecondaryEmailText","passwordRecoveryMailDomain","showLogin","queryString","window","let","token","URLSearchParams","get","pathname","indexOf","tokenArray","replace","split","info","JSON","parse","atob","retrievePasswordRecoveryEnabled","login","then","data","totpmissingkey","totpdisabled","cn","url","continueLogin","msg","value","string","error","errorMessage","grace","l","expire","Math","round","passwordexpired","restoreLogin","verificationCode","passwordRecoveryAbort","href","reload","showAbout","$event","AboutDialogController","closeDialog","hide","show","targetEvent","templateUrl","controller","controllerAs","$inject","changeLanguage","ApplicationBaseURL","hello","form","canChangePassword","$setValidity","isInPasswordRecoveryMode","changePassword","passwordRecoveryInfo","mode","secretQuestionLabel","secretQuestion","obfuscatedRecoveryEmail","passwordRecoveryEmail","passwordRecoveryCheck","usernameChanged","clearTimeout","setTimeout","mailDomain"],"mappings":"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"} \ No newline at end of file diff --git a/UI/WebServerResources/js/Main/Main.app.js b/UI/WebServerResources/js/Main/Main.app.js index 14a6a321f..6929f7bfb 100644 --- a/UI/WebServerResources/js/Main/Main.app.js +++ b/UI/WebServerResources/js/Main/Main.app.js @@ -153,9 +153,7 @@ this.restoreLogin = function() { vm.loginState = false; delete vm.creds.verificationCode; - if (vm.isInPasswordRecoveryMode()) { - vm.passwordRecoveryAbort(); - } + vm.passwordRecoveryAbort(); }; this.continueLogin = function() {