Ejemplo n.º 1
0
            /// <summary>
            /// Permite guardar la sesion del usuario para futuras validaciones
            /// </summary>
            /// <param name="Login">Login de usuario</param>
            /// <param name="Sesiones">Lista de sesiones de usuarios</param>
            /// <param name="Sesion">Sesion ASPNET activa del usuario logeado</param>
            /// <history>
            /// [LucianoP]          [jueves, 13 de julio de 2017]    Creado
            /// </history>
            public static void Guardar(string Login, List <mSession> Sesiones, HttpSessionState Sesion, ref mSession SesionUsuario)
            {
                var sessionModel = new mSession(Sesion.SessionID, Login);

                Sesion["Id"]  = sessionModel;
                SesionUsuario = sessionModel;
                Sesiones.Add(sessionModel);
            }
Ejemplo n.º 2
0
            /// <summary>
            /// Permite eliminar la sesion del usuario
            /// </summary>
            /// <returns>true si el objeto fue removido exitosamente de la sesion</returns>
            /// <history>
            /// [LucianoP]          [jueves, 13 de julio de 2017]    Creado
            /// </history>
            public static bool Eliminar(List <mSession> Sesiones, mSession DatosSesion)
            {
                if (Sesiones == null || DatosSesion == null)
                {
                    return(false);
                }

                return(Sesiones.Remove(DatosSesion));
            }
Ejemplo n.º 3
0
        protected void Session_End(object sender, EventArgs e)
        {
            mSession        sesion   = Session["Id"] as mSession;
            List <mSession> sesiones = Application["Sessions"] as List <mSession>;

            bool UsuarioCerroSesion = DatosSesion.Control.Eliminar(sesiones, sesion);

            //En caso de que haya algun problema al eliminar la sesion, es grabado en el registro de Log
            if (!UsuarioCerroSesion && sesion != null)
            {
                COA.Logger.Logueador.Loggear("Se cerró la sesión del usuario " + sesion.User + " pero la misma no pudo ser eliminada del registro de la aplicación",
                                             System.Diagnostics.EventLogEntryType.Information);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Autenticación de control de usuario de Login.
        /// </summary>
        protected void ucLogin_Authenticate(Object sender, System.Web.UI.WebControls.AuthenticateEventArgs e)
        {
            List <mSession> Sesiones      = Application["Sessions"] as List <mSession>;
            mSession        SesionUsuario = null;

            try
            {
                string strMensaje = "";

                //Validaciones básicas.
                if (!ValidarDatos(ref strMensaje))
                {
                    //Fallaron validaciones básicas.
                    ucLogin.FailureText = strMensaje;

                    e.Authenticated = false;
                    return;
                }

                cFormLogin objFormLogin = new cFormLogin();

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //Control de login de usuarios
                bool blnValidarSesion = DatosSesion.Control.Verificar(ucLogin.UserName, Sesiones, out strMensaje);

                if (!blnValidarSesion)
                {
                    ucLogin.FailureText = strMensaje;
                    e.Authenticated     = false;
                    return;
                }

                DatosSesion.Control.Guardar(ucLogin.UserName, Sesiones, Session, ref SesionUsuario);
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                //Autentica el usuario.
                string ip = hdnIP.Value.ToString();

                //[GonzaloP]          [miércoles, 22 de febrero de 2017]       Work-Item: 9131
                bool LoginSSO = false;

                //Si el usuario no es "master" entonces se valida si está habilitado el logueo por SSO.
                if (ucLogin.UserName != "master")
                {
                    string strURL_SSO = System.Configuration.ConfigurationManager.AppSettings["ServicioValidacionToken"];

                    if (!String.IsNullOrWhiteSpace(strURL_SSO.Trim()))
                    {
                        LoginSSO = true;
                    }
                }

                //Sólo el usuario "master" puede acceder directamente a CIPOL cuando está habilitado el logueo por SSO.
                if (!LoginSSO)
                {
                    if (!objFormLogin.AutenticarUsuario(ref strMensaje, ucLogin.UserName, ucLogin.Password, new System.Net.CookieContainer(), ip))
                    {
                        //Falló autenticación.
                        ucLogin.FailureText = strMensaje;
                        e.Authenticated     = false;
                        DatosSesion.Control.Eliminar(Sesiones, SesionUsuario);
                        return;
                    }

                    //Validar Dominio
                    if (ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.IDUsuario.Equals(0))
                    {
                        if (ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.NombreDominio.Equals("X"))
                        {
                            //Abrir Administrar Tipo de Seguridad.
                            Response.Redirect("frmTipoSeguridad.aspx?CambiarDominio=false");
                            e.Authenticated = false;
                            DatosSesion.Control.Eliminar(Sesiones, SesionUsuario);
                            return;
                        }
                    }
                    else
                    {
                        if (ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.NombreDominio == null || ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.NombreDominio == Constantes.SeguridadNODefinida)
                        {
                            ucLogin.FailureText = "No existe un tipo de seguridad establecido, imposible iniciar la aplicación.";
                            e.Authenticated     = false;
                            DatosSesion.Control.Eliminar(Sesiones, SesionUsuario);
                            return;
                        }
                    }

                    //Redirecciona a la página que obliga a cambiar clave
                    if (ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.OtrosDatos("ForzarCambioClave") == "1")
                    {
                        try
                        {
                            if (ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.OtrosDatos("ForzarCambioClave.SeDebePreguntar") == "1")
                            {
                                ///     1 No obligatorio
                                ManejoSesion.ModoCambioClave = 1;
                                e.Authenticated = true;
                                DatosSesion.Control.Eliminar(Sesiones, SesionUsuario);
                                return;
                            }
                        }
                        catch (Exception)
                        {
                        }
                        ///     3 Obligatorio debido a que se debe forzar el cambio de la contraseña
                        ManejoSesion.ModoCambioClave = 3;
                        //[GonzaloP]          [viernes, 22 de julio de 2016]       Work-Item: 7289 - Se agrega el parámetro "true" para terminar la ejecución de la página actual.
                        Response.Redirect("ChangedPassword\\frmCambiarContrasenia.aspx?url=../frmLogin.aspx", true);
                        e.Authenticated = false;
                        DatosSesion.Control.Eliminar(Sesiones, SesionUsuario);
                        return;
                    }

                    e.Authenticated = true;
                }
                else
                {
                    ucLogin.FailureText = "Se encuentra habilitado el logueo por SSO. No se permite el acceso directo a CIPOL.";
                    e.Authenticated     = false;
                    DatosSesion.Control.Eliminar(Sesiones, SesionUsuario);
                    return;
                }
            }
            catch (Exception ex)
            {
                ucLogin.FailureText = ex.Message;
                e.Authenticated     = false;
                DatosSesion.Control.Eliminar(Sesiones, SesionUsuario);
            }
        }