Add ldapGetUserBeforePasswordChange to manager (#714)

This commit is contained in:
Maxime Besson 2021-01-08 14:32:57 +01:00
parent 6517718f26
commit 93988663b4
18 changed files with 24 additions and 4 deletions

View File

@ -30,7 +30,7 @@ use constant DEFAULTCONFBACKENDOPTIONS => (
dirName => '/usr/local/lemonldap-ng/data/conf', dirName => '/usr/local/lemonldap-ng/data/conf',
); );
our $hashParameters = qr/^(?:(?:l(?:o(?:ca(?:lSessionStorageOption|tionRule)|goutService)|dapExportedVar|wp(?:Ssl)?Opt)|(?:(?:d(?:emo|bi)|facebook|webID)ExportedVa|exported(?:Heade|Va)|issuerDBGetParamete)r|re(?:moteGlobalStorageOption|st2f(?:Verify|Init)Arg|loadUrl)|g(?:r(?:antSessionRule|oup)|lobalStorageOption)|n(?:otificationStorageOption|ginxCustomHandler)|macro)s|o(?:idc(?:S(?:ervice(?:DynamicRegistrationEx(?:portedVar|traClaim)s|MetaDataAuthnContext)|torageOptions)|RPMetaData(?:(?:Option(?:sExtraClaim)?|ExportedVar|Macro)s|Node)|OPMetaData(?:(?:ExportedVar|Option)s|J(?:SON|WKS)|Node))|penIdExportedVars)|c(?:as(?:A(?:ppMetaData(?:(?:ExportedVar|Option|Macro)s|Node)|ttributes)|S(?:rvMetaData(?:(?:ExportedVar|Option)s|Node)|torageOptions))|(?:ustom(?:Plugins|Add)Param|heckUserHiddenHeader|ombModule)s)|s(?:aml(?:S(?:PMetaData(?:(?:ExportedAttribute|Option|Macro)s|Node|XML)|torageOptions)|IDPMetaData(?:(?:ExportedAttribute|Option)s|Node|XML))|essionDataToRemember|laveExportedVars|fExtra)|a(?:(?:daptativeAuthenticationLevelR|ut(?:hChoiceMod|oSigninR))ules|pplicationList)|p(?:ersistentStorageOptions|o(?:rtalSkinRules|st))|v(?:hostOptions|irtualHost)|S(?:MTPTLSOpts|SLVarIf))$/; our $hashParameters = qr/^(?:(?:l(?:o(?:ca(?:lSessionStorageOption|tionRule)|goutService)|dapExportedVar|wp(?:Ssl)?Opt)|(?:(?:d(?:emo|bi)|facebook|webID)ExportedVa|exported(?:Heade|Va)|issuerDBGetParamete)r|re(?:moteGlobalStorageOption|st2f(?:Verify|Init)Arg|loadUrl)|g(?:r(?:antSessionRule|oup)|lobalStorageOption)|n(?:otificationStorageOption|ginxCustomHandler)|macro)s|o(?:idc(?:S(?:ervice(?:DynamicRegistrationEx(?:portedVar|traClaim)s|MetaDataAuthnContext)|torageOptions)|RPMetaData(?:(?:Option(?:sExtraClaim)?|ExportedVar|Macro)s|Node)|OPMetaData(?:(?:ExportedVar|Option)s|J(?:SON|WKS)|Node))|penIdExportedVars)|c(?:as(?:A(?:ppMetaData(?:(?:ExportedVar|Option|Macro)s|Node)|ttributes)|S(?:rvMetaData(?:(?:ExportedVar|Option)s|Node)|torageOptions))|(?:ustom(?:Plugins|Add)Param|heckUserHiddenHeader|ombModule)s)|s(?:aml(?:S(?:PMetaData(?:(?:ExportedAttribute|Option|Macro)s|Node|XML)|torageOptions)|IDPMetaData(?:(?:ExportedAttribute|Option)s|Node|XML))|essionDataToRemember|laveExportedVars|fExtra)|a(?:(?:daptativeAuthenticationLevelR|ut(?:hChoiceMod|oSigninR))ules|pplicationList)|p(?:ersistentStorageOptions|o(?:rtalSkinRules|st))|v(?:hostOptions|irtualHost)|S(?:MTPTLSOpts|SLVarIf))$/;
our $boolKeys = qr/^(?:s(?:aml(?:IDP(?:MetaDataOptions(?:(?:Check(?:S[LS]OMessageSignatur|Audienc|Tim)|IsPassiv)e|A(?:llow(?:LoginFromIDP|ProxiedAuthn)|daptSessionUtime)|Force(?:Authn|UTF8)|StoreSAMLToken|RelayStateURL)|SSODescriptorWantAuthnRequestsSigned)|S(?:P(?:MetaDataOptions(?:(?:CheckS[LS]OMessageSignatur|OneTimeUs)e|EnableIDPInitiatedURL|ForceUTF8)|SSODescriptor(?:WantAssertion|AuthnRequest)sSigned)|erviceUseCertificateInResponse)|DiscoveryProtocol(?:Activation|IsPassive)|CommonDomainCookieActivation|UseQueryStringSpecific|MetadataForceUTF8)|f(?:RemovedUseNotif|OnlyUpgrade)|kip(?:Upgrade|Renew)Confirmation|oap(?:Session|Config)Server|t(?:ayConnecte|orePasswor)d|laveDisplayLogo|howLanguages|slByAjax)|o(?:idc(?:RPMetaDataOptions(?:Allow(?:PasswordGrant|Offline)|Re(?:freshToken|quirePKCE)|LogoutSessionRequired|IDTokenForceClaims|BypassConsent|Public)|ServiceAllow(?:(?:AuthorizationCode|Implicit|Hybrid)Flow|DynamicRegistration)|OPMetaDataOptions(?:(?:CheckJWTSignatur|UseNonc)e|StoreIDToken))|ldNotifFormat)|p(?:ortal(?:Display(?:Re(?:freshMyRights|setPassword|gister)|CertificateResetByMail|GeneratePassword|PasswordPolicy)|ErrorOn(?:ExpiredSession|MailNotFound)|(?:CheckLogin|Statu)s|OpenLinkInNewWindow|ForceAuthn|AntiFrame)|roxyUseSoap)|c(?:o(?:ntextSwitching(?:Allowed2fModifications|StopWithLogout)|mpactConf|rsEnabled)|a(?:ptcha_(?:register|login|mail)_enabled|sSrvMetaDataOptions(?:Gateway|Renew))|heck(?:State|User|XSS)|da)|l(?:dap(?:(?:Group(?:DecodeSearchedValu|Recursiv)|UsePasswordResetAttribut)e|(?:AllowResetExpired|Set)Password|ChangePasswordAsUser|PpolicyControl|ITDS)|oginHistoryEnabled)|no(?:tif(?:ication(?:Server(?:(?:POS|GE)T|DELETE)?|sExplorer)?|y(?:Deleted|Other))|AjaxHook)|i(?:ssuerDB(?:OpenID(?:Connect)?|SAML|CAS|Get)Activation|mpersonationSkipEmptyValues)|to(?:tp2f(?:UserCan(?:Chang|Remov)eKey|DisplayExistingSecret)|kenUseGlobalStorage)|u(?:se(?:RedirectOn(?:Forbidden|Error)|SafeJail)|2fUserCanRemoveKey|pgradeSession)|re(?:st(?:(?:Password|Session|Config|Auth)Server|ExportSecretKeys)|freshSessions)|br(?:uteForceProtection(?:IncrementalTempo)?|owsersDontStorePassword)|d(?:is(?:ablePersistentStorage|playSessionId)|biDynamicHashEnabled)|(?:mai(?:lOnPasswordChang|ntenanc)|vhostMaintenanc)e|g(?:roupsBeforeMacros|lobalLogoutTimer)|a(?:voidAssignment|ctiveTimer)|h(?:ideOldPassword|ttpOnly)|yubikey2fUserCanRemoveKey|krb(?:RemoveDomain|ByJs)|wsdlServer)$/; our $boolKeys = qr/^(?:s(?:aml(?:IDP(?:MetaDataOptions(?:(?:Check(?:S[LS]OMessageSignatur|Audienc|Tim)|IsPassiv)e|A(?:llow(?:LoginFromIDP|ProxiedAuthn)|daptSessionUtime)|Force(?:Authn|UTF8)|StoreSAMLToken|RelayStateURL)|SSODescriptorWantAuthnRequestsSigned)|S(?:P(?:MetaDataOptions(?:(?:CheckS[LS]OMessageSignatur|OneTimeUs)e|EnableIDPInitiatedURL|ForceUTF8)|SSODescriptor(?:WantAssertion|AuthnRequest)sSigned)|erviceUseCertificateInResponse)|DiscoveryProtocol(?:Activation|IsPassive)|CommonDomainCookieActivation|UseQueryStringSpecific|MetadataForceUTF8)|f(?:RemovedUseNotif|OnlyUpgrade)|kip(?:Upgrade|Renew)Confirmation|oap(?:Session|Config)Server|t(?:ayConnecte|orePasswor)d|laveDisplayLogo|howLanguages|slByAjax)|o(?:idc(?:RPMetaDataOptions(?:Allow(?:PasswordGrant|Offline)|Re(?:freshToken|quirePKCE)|LogoutSessionRequired|IDTokenForceClaims|BypassConsent|Public)|ServiceAllow(?:(?:AuthorizationCode|Implicit|Hybrid)Flow|DynamicRegistration)|OPMetaDataOptions(?:(?:CheckJWTSignatur|UseNonc)e|StoreIDToken))|ldNotifFormat)|p(?:ortal(?:Display(?:Re(?:freshMyRights|setPassword|gister)|CertificateResetByMail|GeneratePassword|PasswordPolicy)|ErrorOn(?:ExpiredSession|MailNotFound)|(?:CheckLogin|Statu)s|OpenLinkInNewWindow|ForceAuthn|AntiFrame)|roxyUseSoap)|l(?:dap(?:(?:G(?:roup(?:DecodeSearchedValu|Recursiv)|etUserBeforePasswordChang)|UsePasswordResetAttribut)e|(?:AllowResetExpired|Set)Password|ChangePasswordAsUser|PpolicyControl|ITDS)|oginHistoryEnabled)|c(?:o(?:ntextSwitching(?:Allowed2fModifications|StopWithLogout)|mpactConf|rsEnabled)|a(?:ptcha_(?:register|login|mail)_enabled|sSrvMetaDataOptions(?:Gateway|Renew))|heck(?:State|User|XSS)|da)|no(?:tif(?:ication(?:Server(?:(?:POS|GE)T|DELETE)?|sExplorer)?|y(?:Deleted|Other))|AjaxHook)|i(?:ssuerDB(?:OpenID(?:Connect)?|SAML|CAS|Get)Activation|mpersonationSkipEmptyValues)|to(?:tp2f(?:UserCan(?:Chang|Remov)eKey|DisplayExistingSecret)|kenUseGlobalStorage)|u(?:se(?:RedirectOn(?:Forbidden|Error)|SafeJail)|2fUserCanRemoveKey|pgradeSession)|re(?:st(?:(?:Password|Session|Config|Auth)Server|ExportSecretKeys)|freshSessions)|br(?:uteForceProtection(?:IncrementalTempo)?|owsersDontStorePassword)|d(?:is(?:ablePersistentStorage|playSessionId)|biDynamicHashEnabled)|(?:mai(?:lOnPasswordChang|ntenanc)|vhostMaintenanc)e|g(?:roupsBeforeMacros|lobalLogoutTimer)|a(?:voidAssignment|ctiveTimer)|h(?:ideOldPassword|ttpOnly)|yubikey2fUserCanRemoveKey|krb(?:RemoveDomain|ByJs)|wsdlServer)$/;
our @sessionTypes = ( 'remoteGlobal', 'global', 'localSession', 'persistent', 'saml', 'oidc', 'cas' ); our @sessionTypes = ( 'remoteGlobal', 'global', 'localSession', 'persistent', 'saml', 'oidc', 'cas' );

View File

@ -45,7 +45,7 @@ our $authParameters = {
githubParams => [qw(githubAuthnLevel githubClientID githubClientSecret githubUserField githubScope)], githubParams => [qw(githubAuthnLevel githubClientID githubClientSecret githubUserField githubScope)],
gpgParams => [qw(gpgAuthnLevel gpgDb)], gpgParams => [qw(gpgAuthnLevel gpgDb)],
kerberosParams => [qw(krbAuthnLevel krbKeytab krbByJs krbRemoveDomain krbAllowedDomains)], kerberosParams => [qw(krbAuthnLevel krbKeytab krbByJs krbRemoveDomain krbAllowedDomains)],
ldapParams => [qw(ldapAuthnLevel ldapExportedVars ldapServer ldapPort ldapVerify ldapBase managerDn managerPassword ldapTimeout ldapIOTimeout ldapVersion ldapRaw ldapCAFile ldapCAPath LDAPFilter AuthLDAPFilter mailLDAPFilter ldapSearchDeref ldapGroupBase ldapGroupObjectClass ldapGroupAttributeName ldapGroupAttributeNameUser ldapGroupAttributeNameSearch ldapGroupDecodeSearchedValue ldapGroupRecursive ldapGroupAttributeNameGroup ldapPpolicyControl ldapSetPassword ldapChangePasswordAsUser ldapPwdEnc ldapUsePasswordResetAttribute ldapPasswordResetAttribute ldapPasswordResetAttributeValue ldapAllowResetExpiredPassword ldapITDS)], ldapParams => [qw(ldapAuthnLevel ldapExportedVars ldapServer ldapPort ldapVerify ldapBase managerDn managerPassword ldapTimeout ldapIOTimeout ldapVersion ldapRaw ldapCAFile ldapCAPath LDAPFilter AuthLDAPFilter mailLDAPFilter ldapSearchDeref ldapGroupBase ldapGroupObjectClass ldapGroupAttributeName ldapGroupAttributeNameUser ldapGroupAttributeNameSearch ldapGroupDecodeSearchedValue ldapGroupRecursive ldapGroupAttributeNameGroup ldapPpolicyControl ldapSetPassword ldapChangePasswordAsUser ldapPwdEnc ldapUsePasswordResetAttribute ldapPasswordResetAttribute ldapPasswordResetAttributeValue ldapAllowResetExpiredPassword ldapGetUserBeforePasswordChange ldapITDS)],
linkedinParams => [qw(linkedInAuthnLevel linkedInClientID linkedInClientSecret linkedInFields linkedInUserField linkedInScope)], linkedinParams => [qw(linkedInAuthnLevel linkedInClientID linkedInClientSecret linkedInFields linkedInUserField linkedInScope)],
nullParams => [qw(nullAuthnLevel)], nullParams => [qw(nullAuthnLevel)],
oidcParams => [qw(oidcAuthnLevel oidcRPCallbackGetParam oidcRPStateTimeout)], oidcParams => [qw(oidcAuthnLevel oidcRPCallbackGetParam oidcRPStateTimeout)],

View File

@ -1658,6 +1658,10 @@ qr/^(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-zA-Z0-
'LDAPFilter' => { 'LDAPFilter' => {
'type' => 'text' 'type' => 'text'
}, },
'ldapGetUserBeforePasswordChange' => {
'default' => 0,
'type' => 'bool'
},
'ldapGroupAttributeName' => { 'ldapGroupAttributeName' => {
'default' => 'member', 'default' => 'member',
'type' => 'text' 'type' => 'text'

View File

@ -3292,6 +3292,10 @@ m{^(?:ldapi://[^/]*/?|\w[\w\-\.]*(?::\d{1,5})?|ldap(?:s|\+tls)?://\w[\w\-\.]*(?:
default => 0, default => 0,
type => 'bool', type => 'bool',
}, },
ldapGetUserBeforePasswordChange => {
default => 0,
type => 'bool',
},
ldapSearchDeref => { ldapSearchDeref => {
type => 'select', type => 'select',
select => [ select => [

View File

@ -302,6 +302,7 @@ sub tree {
'ldapPasswordResetAttribute', 'ldapPasswordResetAttribute',
'ldapPasswordResetAttributeValue', 'ldapPasswordResetAttributeValue',
'ldapAllowResetExpiredPassword', 'ldapAllowResetExpiredPassword',
'ldapGetUserBeforePasswordChange',
'ldapITDS' 'ldapITDS'
] ]
}, },

View File

@ -435,6 +435,7 @@
"ldapFilters":"فلتر", "ldapFilters":"فلتر",
"LDAPFilter":"فلتر الاعْتيادي", "LDAPFilter":"فلتر الاعْتيادي",
"ldapGroupAttributeName":"السمات المستهدف", "ldapGroupAttributeName":"السمات المستهدف",
"ldapGetUserBeforePasswordChange":"Search for user before password change",
"ldapGroupAttributeNameGroup":"سمات مصدر المجموعة", "ldapGroupAttributeNameGroup":"سمات مصدر المجموعة",
"ldapGroupAttributeNameSearch":"السمات التي تم البحث عنها", "ldapGroupAttributeNameSearch":"السمات التي تم البحث عنها",
"ldapGroupAttributeNameUser":"سمة مصدر المستخدم", "ldapGroupAttributeNameUser":"سمة مصدر المستخدم",

View File

@ -434,6 +434,7 @@
"ldapExportedVars":"Exported variables", "ldapExportedVars":"Exported variables",
"ldapFilters":"Filters", "ldapFilters":"Filters",
"LDAPFilter":"Default filter", "LDAPFilter":"Default filter",
"ldapGetUserBeforePasswordChange":"Search for user before password change",
"ldapGroupAttributeName":"Target attribute", "ldapGroupAttributeName":"Target attribute",
"ldapGroupAttributeNameGroup":"Group source attribute", "ldapGroupAttributeNameGroup":"Group source attribute",
"ldapGroupAttributeNameSearch":"Searched attributes", "ldapGroupAttributeNameSearch":"Searched attributes",

View File

@ -434,6 +434,7 @@
"ldapExportedVars":"Exported variables", "ldapExportedVars":"Exported variables",
"ldapFilters":"Filters", "ldapFilters":"Filters",
"LDAPFilter":"Default filter", "LDAPFilter":"Default filter",
"ldapGetUserBeforePasswordChange":"Search for user before password change",
"ldapGroupAttributeName":"Target attribute", "ldapGroupAttributeName":"Target attribute",
"ldapGroupAttributeNameGroup":"Group source attribute", "ldapGroupAttributeNameGroup":"Group source attribute",
"ldapGroupAttributeNameSearch":"Searched attributes", "ldapGroupAttributeNameSearch":"Searched attributes",

View File

@ -434,6 +434,7 @@
"ldapExportedVars":"Variables exportadas", "ldapExportedVars":"Variables exportadas",
"ldapFilters":"Filtros", "ldapFilters":"Filtros",
"LDAPFilter":"Filtro por defecto", "LDAPFilter":"Filtro por defecto",
"ldapGetUserBeforePasswordChange":"Search for user before password change",
"ldapGroupAttributeName":"Atributo objetivo", "ldapGroupAttributeName":"Atributo objetivo",
"ldapGroupAttributeNameGroup":"Group source attribute", "ldapGroupAttributeNameGroup":"Group source attribute",
"ldapGroupAttributeNameSearch":"Atributos buscados", "ldapGroupAttributeNameSearch":"Atributos buscados",

View File

@ -434,6 +434,7 @@
"ldapExportedVars":"Variables exportées", "ldapExportedVars":"Variables exportées",
"ldapFilters":"Filtres", "ldapFilters":"Filtres",
"LDAPFilter":"Filtre par défaut", "LDAPFilter":"Filtre par défaut",
"ldapGetUserBeforePasswordChange":"Rechercher l'utilisateur avant le changement de mot de passe",
"ldapGroupAttributeName":"Attribut cible", "ldapGroupAttributeName":"Attribut cible",
"ldapGroupAttributeNameGroup":"Attribut source groupe", "ldapGroupAttributeNameGroup":"Attribut source groupe",
"ldapGroupAttributeNameSearch":"Attributs recherchés", "ldapGroupAttributeNameSearch":"Attributs recherchés",

View File

@ -434,6 +434,7 @@
"ldapExportedVars":"Variabili esportate", "ldapExportedVars":"Variabili esportate",
"ldapFilters":"Filtri", "ldapFilters":"Filtri",
"LDAPFilter":"Filtro predefinito", "LDAPFilter":"Filtro predefinito",
"ldapGetUserBeforePasswordChange":"Search for user before password change",
"ldapGroupAttributeName":"Attributo target", "ldapGroupAttributeName":"Attributo target",
"ldapGroupAttributeNameGroup":"Attributo del gruppo sorgente", "ldapGroupAttributeNameGroup":"Attributo del gruppo sorgente",
"ldapGroupAttributeNameSearch":"Attributi ricercati", "ldapGroupAttributeNameSearch":"Attributi ricercati",

View File

@ -434,6 +434,7 @@
"ldapExportedVars":"Wyeksportowane zmienne", "ldapExportedVars":"Wyeksportowane zmienne",
"ldapFilters":"Filtry", "ldapFilters":"Filtry",
"LDAPFilter":"Domyślny filtr", "LDAPFilter":"Domyślny filtr",
"ldapGetUserBeforePasswordChange":"Search for user before password change",
"ldapGroupAttributeName":"Atrybut docelowy", "ldapGroupAttributeName":"Atrybut docelowy",
"ldapGroupAttributeNameGroup":"Atrybut źródła grupy", "ldapGroupAttributeNameGroup":"Atrybut źródła grupy",
"ldapGroupAttributeNameSearch":"Szukane atrybuty", "ldapGroupAttributeNameSearch":"Szukane atrybuty",

View File

@ -434,6 +434,7 @@
"ldapExportedVars":"Dışa aktarılan değişkenler", "ldapExportedVars":"Dışa aktarılan değişkenler",
"ldapFilters":"Filtreler", "ldapFilters":"Filtreler",
"LDAPFilter":"Varsayılan filtre", "LDAPFilter":"Varsayılan filtre",
"ldapGetUserBeforePasswordChange":"Search for user before password change",
"ldapGroupAttributeName":"Hedef nitelik", "ldapGroupAttributeName":"Hedef nitelik",
"ldapGroupAttributeNameGroup":"Grup kaynağı niteliği", "ldapGroupAttributeNameGroup":"Grup kaynağı niteliği",
"ldapGroupAttributeNameSearch":"Aranan nitelikler", "ldapGroupAttributeNameSearch":"Aranan nitelikler",

View File

@ -434,6 +434,7 @@
"ldapExportedVars":"Biến đã được xuất", "ldapExportedVars":"Biến đã được xuất",
"ldapFilters":"Bộ lọc", "ldapFilters":"Bộ lọc",
"LDAPFilter":"Bộ lọc mặc định", "LDAPFilter":"Bộ lọc mặc định",
"ldapGetUserBeforePasswordChange":"Search for user before password change",
"ldapGroupAttributeName":"Thuộc tính đích", "ldapGroupAttributeName":"Thuộc tính đích",
"ldapGroupAttributeNameGroup":"Thuộc tính nguồn nhóm", "ldapGroupAttributeNameGroup":"Thuộc tính nguồn nhóm",
"ldapGroupAttributeNameSearch":"Thuộc tính đã tìm kiếm", "ldapGroupAttributeNameSearch":"Thuộc tính đã tìm kiếm",

View File

@ -434,6 +434,7 @@
"ldapExportedVars":"Exported variables", "ldapExportedVars":"Exported variables",
"ldapFilters":"Filters", "ldapFilters":"Filters",
"LDAPFilter":"Default filter", "LDAPFilter":"Default filter",
"ldapGetUserBeforePasswordChange":"Search for user before password change",
"ldapGroupAttributeName":"Target attribute", "ldapGroupAttributeName":"Target attribute",
"ldapGroupAttributeNameGroup":"Group source attribute", "ldapGroupAttributeNameGroup":"Group source attribute",
"ldapGroupAttributeNameSearch":"Searched attributes", "ldapGroupAttributeNameSearch":"Searched attributes",

View File

@ -434,6 +434,7 @@
"ldapExportedVars":"已匯出的變數", "ldapExportedVars":"已匯出的變數",
"ldapFilters":"過濾器", "ldapFilters":"過濾器",
"LDAPFilter":"預設過濾器", "LDAPFilter":"預設過濾器",
"ldapGetUserBeforePasswordChange":"Search for user before password change",
"ldapGroupAttributeName":"目標屬性", "ldapGroupAttributeName":"目標屬性",
"ldapGroupAttributeNameGroup":"群組來源屬性", "ldapGroupAttributeNameGroup":"群組來源屬性",
"ldapGroupAttributeNameSearch":"已搜尋的屬性", "ldapGroupAttributeNameSearch":"已搜尋的屬性",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long