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); }
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); }
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); }
private static void ExtenderSesion(MAEUserSession session, ConfiguracionSeguridadEntity _beSeteos) { session.FechaInicio = DateTime.Now; session.FechaFinalizacion = MAEDateTimeTools.DateTimeAdd(DateTime.Now, _beSeteos.TimeOutInicialSesion, "s"); UpdateSesionesContext(session); }