Esempio n. 1
0
        private static UsuarioEntity ValidateUser(string Username)
        {
            UsuarioEntity usuario = new UsuarioEntity();

            using (OrdenesContext mcc = new OrdenesContext())
            {
                usuario = (from d in mcc.Usuario where d.Username.Equals(Username) select d).FirstOrDefault();
            }
            if (usuario == null)
            {
                SessionHelper.InsertarLogSeguridad((byte)LogCodigoAccionSeguridad.UsuarioInexistente, "Username ingresado: " + Username, (byte)TipoAplicacion.ORDENES);
                AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_AUTHENTICATEUSUARIO, false);
            }
            if (usuario.BajaLogica)
            {
                SessionHelper.InsertarLogSeguridad((byte)LogCodigoAccionSeguridad.UsuarioBajaLogica, null, (byte)TipoAplicacion.ORDENES);
                AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_AUTHENTICATEUSUARIO, false);
            }
            if (usuario.Bloqueado)
            {
                SessionHelper.InsertarLogSeguridad((byte)LogCodigoAccionSeguridad.UsuarioBloqueado, null, (byte)TipoAplicacion.ORDENES);
                AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_USUARIOBLOQUEADO, false, usuario.Username);
            }
            return(usuario);
        }
        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 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);
            }
        }
Esempio n. 4
0
 private static void ValidarReseteoPassword(UsuarioEntity user)
 {
     if (user.ResetPassword)
     {
         var codigo = CodeMensajes.WAR_CAMBIAR_CLAVE_ACCESO;
         AdministradorControlErrores.EnviarExcepcion(codigo, false);
     }
 }
Esempio n. 5
0
        public static void ValidarAccesoAlSistema(int idUsuario)
        {
            RolEntity        rolAccesoSistema = CachingManager.Instance.GetRolByValorNumerico(OrdenesApplication.Instance.RolIngreso);
            RolUsuarioEntity rolUsuarioId     = CachingManager.Instance.GetRolesUsuario(idUsuario).Find(d => d.IdRol == rolAccesoSistema.IdRol);

            if (rolUsuarioId == null || rolUsuarioId.IdRol != rolAccesoSistema.IdRol)
            {
                var codigo = CodeMensajes.ERR_SIN_PERMISO_ACCESO;
                AdministradorControlErrores.EnviarExcepcion(codigo, false);
            }
        }
Esempio n. 6
0
        private static void ManejarErrorDeAutenticacion(UsuarioEntity usuario, ConfiguracionSeguridadEntity configuracionSeguridad, TipoAplicacion idAplicacion = TipoAplicacion.ORDENES)
        {
            string codigo = CodeMensajes.ERR_AUTHENTICATEUSUARIO;

            usuario.CantidadIntentos = IncreaseIntentos(usuario);

            if (configuracionSeguridad.CantidadIntentosMaximo > 0)
            {
                if (usuario.CantidadIntentos >= configuracionSeguridad.CantidadIntentosMaximo)
                {
                    UserHelper.BlockUsuarios(usuario.IdUsuario, (byte)LogCodigoAccionSeguridad.MaximosIntentos);
                    codigo = CodeMensajes.ERR_ALCANZO_MAXIMO_INTENTOS;
                }
            }
            AdministradorControlErrores.EnviarExcepcion(codigo, false, usuario.Username);
        }
Esempio n. 7
0
 private static void ValidarDiasCambioPassword(int diasCambioPassword, UsuarioEntity user)
 {
     if (user.Proceso)
     {
         return;
     }
     if (!user.UltimaModificacionPassword.HasValue || diasCambioPassword == 0)
     {
         return;
     }
     if (MAEDateTimeTools.DateTimeAdd(user.UltimaModificacionPassword.Value, diasCambioPassword, "d").Date <= DateTime.Now.Date)
     {
         var codigo = CodeMensajes.WAR_CAMBIAR_CLAVE_ACCESO;
         AdministradorControlErrores.EnviarExcepcion(codigo, false);
     }
 }
 public static void ValidaUsuarioActivo(int cantidadDias, UsuarioEntity usuario)
 {
     if (usuario.NoControlarInactividad || !usuario.UltimoLoginExitoso.HasValue)
     {
         return;
     }
     if (cantidadDias == 0)
     {
         return;
     }
     if (MAEDateTimeTools.DateTimeAdd(usuario.UltimoLoginExitoso.Value, cantidadDias, "d").Date >= DateTime.Now.Date)
     {
         return;
     }
     BlockUsuarios(usuario.IdUsuario, (byte)LogCodigoAccion.UsuarioBloqueadoPorTiempoInactividad);
     AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CUENTA_EXPIRADA_INACTIVA, false);
 }
Esempio n. 9
0
        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);
                    }
                }
            }
        }
Esempio n. 10
0
 public static void SetLoginExitoso(int idUsuario)
 {
     try
     {
         using (OrdenesContext context = new OrdenesContext())
         {
             UsuarioEntity user = (from d in context.Usuario
                                   where d.IdUsuario == idUsuario &&
                                   d.BajaLogica == false
                                   select d).FirstOrDefault();
             user.UltimaModificacionPassword = (user.UltimaModificacionPassword == null) ? DateTime.Now : user.UltimaModificacionPassword;
             user.UltimoLoginExitoso         = DateTime.Now;
             user.LoginRealizado             = true;
             user.CantidadIntentos           = 0;
             context.SaveChanges();
         }
     }
     catch
     {
         AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_SET_LOGINEXITOSO_USUARIO, false);
     }
 }
        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);
            }
        }