Sitecore - Diferent password requirements for diferent roles

24 Views Asked by At

I'm trying to apply diferent password requirements to diferent roles in a sitecore instance. Let's say I have the following roles and requirements:

  • Role1 : 10 characters
  • Role2 : 15 characters and a special symbol

My inicial idea was to create a class library based on Sitecore.Security.SitecoreMembershipProvider and overrides the ChangePassword method

public class PasswordValidatorProvider : Sitecore.Security.SitecoreMembershipProvider
{

        public override bool ChangePassword(string username, string oldPassword, string newPassword)
        {
            System.Web.Security.MembershipUser membershipUser = GetUser(username,false);
            Sitecore.Diagnostics.Log.Warn("Debug: no membership",this);
            if (membershipUser != null) { return false; }
            string[] roles = new System.Web.Security.SqlRoleProvider().GetRolesForUser(username);
    
            foreach (string role in roles) {
                Sitecore.Diagnostics.Log.Warn("Debug: Role found:" + role,this);
                    }
    
            return base.ChangePassword(username, oldPassword, newPassword);
    
    
        }
    
}

Sitecore.config

<switchingProviders>
     <membership>
       <provider providerName="CustomProvider" storeFullNames="true" wildcard="%" domains="*" />     </membership> 

Web.config

<membership defaultProvider="CustomProvider" hashAlgorithmType="SHA1">
      <providers>
        <clear />
        <add name="CustomProvider" type="CustomProvider.Feature.CustomizedPassword.PasswordValidatorProvider, Custom.Feature.CustomizedPassword" realProviderName="sitecore" mappings="switchingProviders/membership"/>
        <add name="sitecore" type="Sitecore.Security.SitecoreMembershipProvider, Sitecore.Kernel" realProviderName="sql" providerWildcard="%" raiseEvents="true" />
        <add name="sql" type="System.Web.Security.SqlMembershipProvider" connectionStringName="security" applicationName="sitecore" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" />
        <add name="disabled" type="Sitecore.Security.DisabledMembersipProvider, Sitecore.Kernel" applicationName="sitecore" />
        <add name="switcher" type="Sitecore.Security.SwitchingMembershipProvider, Sitecore.Kernel" applicationName="sitecore" mappings="switchingProviders/membership" />
      </providers>
    </membership>

Expected the debug message appearing in logs and/or visual studio to debug when attached and when trying to change the password of a user

0

There are 0 best solutions below