private static void ValidaConfiguracionPassword(string nueva, string validacion, UsuarioEntity usuario, TipoValidacionPassword Tipo) { var configuracionSeguridad = CachingManager.Instance.GetConfiguracionSeguridad(); int _caracteresnumericos = 0; int _caracteresalfabeticos = 0; char _caracter_a_evaluar = char.MinValue; int _cantidadcaracterrepetido = 0; int _maxcantidadcaracteresconsecutivos = 0; int _cantidadcaracteresminusculas = 0; int _cantidadcaracteresmayusculas = 0; int _cantidadcaracteressimbolos = 0; if ((string.IsNullOrEmpty(nueva)) && (string.IsNullOrEmpty(validacion))) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_PASSWORD_INCORRECTA, false); } // Que la nueva pass coincida con la validacion if (nueva != validacion) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVES_VERIFICACION, false); } // Valida que la nueva passw no sea el username if (usuario.Username == nueva) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVENOUSERNAME, false); } // Valida que la nueva passw contenga solo numeros o caracteres alfabeticos foreach (char chr in nueva) { if ((!Char.IsLetterOrDigit(chr)) && (!MAETools.IsSymbol(chr))) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVEALFABETICOSNUMERICOS, false); } // Calcula cantidad de numericos y alfabeticos if (Char.IsDigit(chr)) { _caracteresnumericos = _caracteresnumericos + 1; } else { if (MAETools.IsSymbol(chr)) { _cantidadcaracteressimbolos = _cantidadcaracteressimbolos + 1; } else { _caracteresalfabeticos = _caracteresalfabeticos + 1; if (Char.IsLower(chr)) { _cantidadcaracteresminusculas = _cantidadcaracteresminusculas + 1; } else { _cantidadcaracteresmayusculas = _cantidadcaracteresmayusculas + 1; } } } // Calcula la maxima cantidad de caracteres que se repite el char if (_caracter_a_evaluar == chr) { _cantidadcaracterrepetido = _cantidadcaracterrepetido + 1; } else { _caracter_a_evaluar = chr; _cantidadcaracterrepetido = 0; } if (_maxcantidadcaracteresconsecutivos < _cantidadcaracterrepetido) { _maxcantidadcaracteresconsecutivos = _cantidadcaracterrepetido; } } if (configuracionSeguridad.ConsideraCantidadCaracteres) { if (_caracteresnumericos < configuracionSeguridad.CantidadNumericosPassword) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVECANTIDADNUMERICOS, false, configuracionSeguridad.CantidadNumericosPassword); } if (_caracteresalfabeticos < configuracionSeguridad.CantidadAlfabeticosPassword) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVECANTIDADALFABETICOS, false, configuracionSeguridad.CantidadAlfabeticosPassword); } if (_cantidadcaracteresminusculas < configuracionSeguridad.CantidadMinusculasPassword) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVECANTIDADMINUSCULAS, false, configuracionSeguridad.CantidadMinusculasPassword); } if (_cantidadcaracteresmayusculas < configuracionSeguridad.CantidadMayusculasPassword) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVECANTIDADMAYUSCULAS, false, configuracionSeguridad.CantidadMayusculasPassword); } if (_cantidadcaracteressimbolos < configuracionSeguridad.CantidadSimbolosPassword) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVECANTIDADSIMBOLOS, false, configuracionSeguridad.CantidadSimbolosPassword); } } if (configuracionSeguridad.ConsideraMinimoLargoPassword && configuracionSeguridad.CantidadMinimoLargoPassword > nueva.Length) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVE_VERIFICACION_CARACTERES, false, configuracionSeguridad.CantidadMinimoLargoPassword); } if (configuracionSeguridad.ConsideraMaximaCantCaracteresConsecutivos && (configuracionSeguridad.CantidadMaximaCaracteresConsecutivos < _maxcantidadcaracteresconsecutivos + 1)) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVECANTIDADCARACTERESCONSECUTIVOS, false, (configuracionSeguridad.CantidadMaximaCaracteresConsecutivos + 1)); } if ((Tipo != TipoValidacionPassword.Reset) && (ExistsClaveHistorica(usuario.IdUsuario, configuracionSeguridad.CantidadPasswordsHistoricas, MAETools.HashMD5(nueva)))) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVE_EXISTE_HISTORICA, false, configuracionSeguridad.CantidadPasswordsHistoricas); } }
private static void ValidaPassword(UsuarioEntity usuario, string vieja, string nueva, string validacion, TipoValidacionPassword Tipo) { string vieja_md5 = string.Empty; // Descifro solo en el casos de un changeclave (sino nunca llega como parametro) if (Tipo == TipoValidacionPassword.Change) { if (string.IsNullOrEmpty(vieja)) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_PASSWORD_INCORRECTA, false); } vieja_md5 = MAETools.HashMD5(vieja); } if ((Tipo == TipoValidacionPassword.Change) && (vieja_md5 != usuario.Pass)) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_PASSWORD_INCORRECTA, false); } if ((Tipo == TipoValidacionPassword.Change) && (vieja == nueva)) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVESINCAMBIOS, false); } ValidaConfiguracionPassword(nueva, validacion, usuario, Tipo); }