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); }
public override object ExecuteCommand(InCourseRequest inCourseRequest) { MCContext.Entidades.UsuarioEntity requestUsuario = new MCContext.Entidades.UsuarioEntity() { Username = UserName, Pass = MAETools.HashMD5(Password), Nombre = Nombre, Bloqueado = Bloqueado, NoControlarInactividad = NoControlarInactividad, Proceso = Proceso, IdPersona = IdPersona, UltimaModificacionPassword = DateTime.Now, UltimoLoginExitoso = DateTime.Now, ConfiguracionRegional = "es-AR" }; foreach (string idRol in RolesUsuario.Split(',')) { RolUsuarioEntity request = new RolUsuarioEntity() { IdRol = short.Parse(idRol) }; requestUsuario.RolUsuarioItems.Add(request); } this.AgregarAlContextoParaAlta(requestUsuario); SessionHelper.InsertarLogSeguridad((byte)LogCodigoAccionSeguridad.AltaUsuario, "Nuevo user: " + UserName, (byte)TipoAplicacion.ORDENES); return(null); }
public static void Login(InfoCliente infoCliente, UsuarioEntity datosLogin, bool isPassHash = false, TipoAplicacion idAplicacion = TipoAplicacion.ORDENES) { UsuarioEntity usuario = ValidateUser(datosLogin.Username); var configuracionSeguridad = CachingManager.Instance.GetConfiguracionSeguridad(); ValidarAccesoAlSistema(usuario.IdUsuario); string userPass = isPassHash ? datosLogin.Pass : MAETools.HashMD5(datosLogin.Pass); if (usuario.Pass != userPass) { ManejarErrorDeAutenticacion(usuario, configuracionSeguridad, idAplicacion); } ValidarReseteoPassword(usuario); ValidarDiasCambioPassword(configuracionSeguridad.DiasCambioPassword, usuario); UserHelper.ValidaUsuarioActivo(configuracionSeguridad.MaximoDiasInactividad, usuario); if (usuario.Expiracion.HasValue && usuario.Expiracion.Value.Date <= DateTime.Now) { UserHelper.BlockUsuarios(usuario.IdUsuario, (byte)LogCodigoAccionSeguridad.UsuarioBloqueadoPorCtaExpirada); AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CUENTA_EXPIRADA, false, usuario.Username); } if (usuario.Proceso) { SessionHelper.InitSession(infoCliente, usuario, idAplicacion); } }
public static void ChangePassword(int IdUsuario, string anterior, string nueva, string nuevaVerificacion) { var usuario = CachingManager.Instance.GetByIdUsuario(IdUsuario); CachingManager.Instance.ClearUser(IdUsuario); ValidaPassword(usuario, anterior, nueva, nuevaVerificacion, TipoValidacionPassword.Change); ChangeClave(IdUsuario, MAETools.HashMD5(anterior), MAETools.HashMD5(nueva), DateTime.Now); }
public static void ResetPassword(UsuarioEntity usuario, string nueva, string nuevaVerificacion) { CachingManager.Instance.ClearUser(usuario.IdUsuario); ValidaConfiguracionPassword(nueva, nuevaVerificacion, usuario, TipoValidacionPassword.Reset); var _beSeteos = CachingManager.Instance.GetConfiguracionSeguridad(); DateTime ultimaModificacionPass = DateTime.Now.AddDays(-(_beSeteos.DiasCambioPassword + 1)); ChangeClave(usuario.IdUsuario, usuario.Pass, MAETools.HashMD5(nueva), ultimaModificacionPass, true); }
public static void Login(InfoCliente infoCliente, UsuarioEntity datosLogin, bool isPassHash = false, TipoAplicacion idAplicacion = TipoAplicacion.ORDENES) { UsuarioEntity usuario = ValidateUser(datosLogin.Username); UsuarioEntity partyFather = new UsuarioEntity(); var configuracionSeguridad = CachingManager.Instance.GetConfiguracionSeguridad(); ValidarAccesoAlSistema(usuario.IdUsuario); string userPass = isPassHash ? datosLogin.Pass : MAETools.HashMD5(datosLogin.Pass); if (usuario.Pass != userPass) { ManejarErrorDeAutenticacion(usuario, configuracionSeguridad, idAplicacion); } ValidarReseteoPassword(usuario); ValidarDiasCambioPassword(configuracionSeguridad.DiasCambioPassword, usuario); UserHelper.ValidaUsuarioActivo(configuracionSeguridad.MaximoDiasInactividad, usuario); if (usuario.Expiracion.HasValue && usuario.Expiracion.Value.Date <= DateTime.Now) { UserHelper.BlockUsuarios(usuario.IdUsuario, (byte)LogCodigoAccionSeguridad.UsuarioBloqueadoPorCtaExpirada); AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CUENTA_EXPIRADA, false, usuario.Username); } if (usuario.Proceso) { SessionHelper.InitSession(infoCliente, usuario, idAplicacion); } if (datosLogin.Agencia != null) { using (OrdenesContext mcc = new OrdenesContext()) { partyFather = (from d in mcc.Usuario where d.Username.Equals(datosLogin.Agencia) select d).FirstOrDefault(); PartyHierarchyEntity ph = (from d in mcc.PartyHierarchyEntities where d.IdPartyFather.Equals(partyFather.IdPersona) && d.IdPartyHijo.Equals(usuario.IdPersona) select d).FirstOrDefault(); if (ph == null) { AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_USUARIO_NO_HABILITADO_AGENCIA, false, usuario.Username, usuario.Agencia); } } } }
public override object ExecuteCommand(InCourseRequest inCourseRequest) { int PersonaId = (from d in context.Persona where d.MarketCustomerNumber == "000" select d).FirstOrDefault().IdParty; MCContext.Entidades.UsuarioEntity requestUsuario = new MCContext.Entidades.UsuarioEntity() { Username = UserName, Pass = MAETools.HashMD5(Password), Nombre = Nombre, Bloqueado = false, NoControlarInactividad = false, Proceso = false, IdPersona = PersonaId, UltimaModificacionPassword = DateTime.Now, UltimoLoginExitoso = DateTime.Now, Email = Email }; AgregarRolesPorDefecto(requestUsuario); AgregarAlContextoParaAlta(requestUsuario); return(null); }
public override object ExecuteCommand(InCourseRequest inCourseRequest) { UsuarioEntity requestUsuario = new UsuarioEntity() { Username = UserName, Pass = MAETools.HashMD5(Password), Nombre = Name, Bloqueado = false, NoControlarInactividad = false, ConfiguracionRegional = "es-AR", Proceso = false, UltimaModificacionPassword = DateTime.Now, UltimoLoginExitoso = DateTime.Now, Email = Email, IdPersona = IdPersona, Portfolio = new List <PortfolioUsuarioEntity>() }; if (CachingManager.Instance.GetPersonaById(IdPersona).IdPartyType == (int)TipoPersona.ADMUSERS) { requestUsuario.IdPersona = CachingManager.Instance.GetIdPersonaAdministradaById(IdPersona); List <DTOPortfolio> portfolios = CachingManager.Instance.GetPortfoliosByIdPersona(IdPersona); foreach (DTOPortfolio por in portfolios) { AgregarPortfolio(requestUsuario, por.IdPortfolio); } AgregarLimites(requestUsuario, LimiteOferta, LimiteOperacion); } AgregarRolesPorDefecto(requestUsuario); AgregarAlContextoParaAlta(requestUsuario); SessionHelper.InsertarLogSeguridad((byte)LogCodigoAccionSeguridad.AltaUsuario, "Nuevo user: "******"Se creó el usuario correctamente" })); }
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); } }