Ejemplo n.º 1
0
        public static void InitSession(InfoCliente infoCliente, UsuarioEntity usuario, TipoAplicacion idAplicacion = TipoAplicacion.ORDENES)
        {
            MAEUserSession userSession            = new MAEUserSession();
            var            configuracionSeguridad = CachingManager.Instance.GetConfiguracionSeguridad();

            userSession.IdPersona             = (int)usuario.IdPersona;
            userSession.IdUsuario             = usuario.IdUsuario;
            userSession.Ip                    = infoCliente.Ip;
            userSession.Dispositivo           = infoCliente.Dispositivo;
            userSession.FechaInicio           = DateTime.Now;
            userSession.FechaFinalizacion     = MAEDateTimeTools.DateTimeAdd(DateTime.Now, configuracionSeguridad.TimeOutInicialSesion, "s");
            userSession.IdAplicacion          = (byte)idAplicacion;
            userSession.UltimaActualizacion   = usuario.UltimaActualizacion;
            userSession.ConfiguracionRegional = usuario.ConfiguracionRegional;

            //AESEncryptor encryptor = new AESEncryptor();
            //userSession.Global = encryptor.GetUniqueKey();
            //SecurityHelper.GetRSAKey(ref userSession);
            var clientKeyPair = PublicKeyBox.GenerateKeyPair();
            var serverKeyPair = PublicKeyBox.GenerateKeyPair();

            userSession.PrivateKey = Convert.ToBase64String(clientKeyPair.PrivateKey);
            userSession.PublicKey  = Convert.ToBase64String(clientKeyPair.PublicKey);

            userSession.ClientPublic              = Convert.ToBase64String(clientKeyPair.PublicKey);
            userSession.ClientSecret              = Convert.ToBase64String(clientKeyPair.PrivateKey);
            userSession.ServerPublic              = Convert.ToBase64String(serverKeyPair.PublicKey);
            userSession.ServerSecret              = Convert.ToBase64String(serverKeyPair.PrivateKey);
            userSession.Nonce                     = Convert.ToBase64String(PublicKeyBox.GenerateNonce());
            userSession.AllowedCommands           = new Dictionary <string, Type>();
            userSession.JavascriptAllowedCommands = new Dictionary <string, string>();
            userSession.PermisosUsuario           = new Dictionary <string, bool>();
            List <Permiso>           PermisosUsuario = CachingManager.Instance.GetAllPermisosByIdUsuario(userSession.IdUsuario);
            Dictionary <string, int> mapeoAcciones   = new Dictionary <string, int>();
            var Acciones = CachingManager.Instance.GetAllAcciones();

            OrdenesApplication.Instance.GetComandosHabilitados(idAplicacion)
            .ForEach(cmd =>
            {
                var k = OrdenesApplication.Instance.Encryptor.DynamicEncryption(cmd.FullName);
                userSession.AllowedCommands.Add(k, cmd.CommandType);
                userSession.JavascriptAllowedCommands.Add(cmd.Key, k);
                mapeoAcciones.Add(k, cmd.IdAccion);
            });
            foreach (KeyValuePair <string, int> kv in mapeoAcciones)
            {
                Permiso p = PermisosUsuario.Find(x => x.IdAccion == kv.Value);
                if (p != null)
                {
                    var  permisoAccion = Acciones.Find(x => x.IdAccion == kv.Value).HabilitarPermisos;
                    bool habilitado    = (p.Permisos & permisoAccion) != 0;
                    userSession.PermisosUsuario.Add(kv.Key, habilitado);
                }
            }
            CreateSesiones(userSession, (byte)idAplicacion);
            InsertarLogSeguridad((byte)LogCodigoAccionSeguridad.InicioSesion, "Inicio de sesión exitoso", (byte)idAplicacion);
        }
Ejemplo n.º 2
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);
 }
Ejemplo n.º 4
0
        public static MAEUserSession GetSesionExistente(Guid idSesion, byte IdAplicacion = (byte)TipoAplicacion.ORDENES)
        {
            MAEUserSession session = GetByIDSesiones(idSesion);

            // OK existe la sesion?

            if (session == null)
            {
                InsertarLogSeguridad((byte)LogCodigoAccionSeguridad.SesionExpirada, null, IdAplicacion);
                throw new SessionException(CodeMensajes.ERR_EXPIRO_SESION);
            }
            //Compara las fechas de las sesiones
            if (session.FechaFinalizacion < DateTime.Now)
            {
                UsuarioEntity u = UserHelper.GetByIDUsuarios(session.IdUsuario);
                if (!u.Proceso)
                {
                    InsertarLogSeguridad((byte)LogCodigoAccionSeguridad.SesionExpirada, null, IdAplicacion);
                    throw new SessionException("La sesión se ha vencido.");
                }
                else
                {
                    var _beSeteos = CachingManager.Instance.GetConfiguracionSeguridad();
                    ExtenderSesion(session, _beSeteos);
                }
            }
            else
            {
                // Intenta extender la pass
                var _beSeteos = CachingManager.Instance.GetConfiguracionSeguridad();
                if (session.FechaFinalizacion <
                    (MAEDateTimeTools.DateTimeAdd(DateTime.Now, _beSeteos.TimeOutInicialSesion + _beSeteos.TimeOutExtensionSesion, "s")))
                {
                    ExtenderSesion(session, _beSeteos);
                }
            }
            MAEUserSession.CargarInstancia(session);
            return(session);
        }
Ejemplo n.º 5
0
 private static void ExtenderSesion(MAEUserSession session, ConfiguracionSeguridadEntity _beSeteos)
 {
     session.FechaInicio       = DateTime.Now;
     session.FechaFinalizacion = MAEDateTimeTools.DateTimeAdd(DateTime.Now, _beSeteos.TimeOutInicialSesion, "s");
     UpdateSesionesContext(session);
 }