public bool AutenticarUsuario(ref string Mensaje, string usuario, string password, System.Net.CookieContainer cokie, string ip) { //Instancia objetos necesarios. cFormLogin objUILogin = new cFormLogin(); //Inicia Sesión de Usuario en CIPOL. mFormLogin objResultadoIS = objUILogin.IniciarSesion(usuario, password, cokie, ip); if (!objResultadoIS.ResultadoProcesoInicioSesion) { //NO SE PUDO INICIAR SESIÓN en CIPOL: Mensaje = objResultadoIS.Mensaje; return(false); } //INICIO SESIÓN SATISFACTORIO: //Guarda Datos necesarios en Sesión ManejoSesion.DatosSistemaSesion = objResultadoIS.DatosSistema; ManejoSesion.DatosCIPOLSesion = objResultadoIS.DatosCipol; //Carga los parámetros generales del Sistema en Sesión. if (!objUILogin.CargarParametros(ref Mensaje)) { //Si falló al cargar los parámetros generales. return(false); } //TIPO DE SEGURIDAD SÍ DEFINIDO: //Guarda en sesión el nombre de la organización. ManejoSesion.DatosSistemaSesion.DatosGenerales.AcercaDe_Cliente = ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.NombreOrganizacion; //Autenticación OK. return(true); }
/// <summary> /// Realizar el inicio de sesión para un usuario en la BD. /// </summary> /// <param name="NombreUsuario"></param> /// <param name="Pwd"></param> /// <returns>Objeto "RetornoInicioSesion" que indica el Resultado(true o false), Datos Globales del Sistema, el objeto Usuario CIPOL y un posible Mensaje de error.</returns> /// <history> /// [MartinV] [jueves, 25 de septiembre de 2014] Modificado GCP-Cambios 15585 /// </history> private mFormLogin IniciarSesion(string NombreUsuario, string Pwd, System.Net.CookieContainer cokie, string ip) { ///''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' // DESCRIPCION DE VARIABLES LOCALES //strUsuario : Nombre del usuario //objProxy : objeto proxy de conexion al servicio web //strCipol : objeto serializado de sipol, //strErro : string con mensaje de error si lo hubiera. //objEncSer : Objeto de encriptación RSA que contiene la clave pública // del servidor //strClave : Clave de encriptación //objEncCli : Objeto de encriptación RSA que contiene la clave pública // y privada del cliente ///''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' string strUsuario = null; COA.WebCipol.Fachada.FInicioSesion facInicioSesion = new COA.WebCipol.Fachada.FInicioSesion(); string strCipol = null; string strError = ""; string strClave = null; string strTerminal = null; mFormLogin objRetIS = new mFormLogin(); //Define variables locales. //System.Runtime.Serialization.Formatters.Binary.BinaryFormatter objDeserializador; //System.IO.MemoryStream objFlujo; byte[] bytPub; System.Security.Cryptography.RSACryptoServiceProvider objEncServ = new System.Security.Cryptography.RSACryptoServiceProvider(); System.Security.Cryptography.RSACryptoServiceProvider objEncCli = new System.Security.Cryptography.RSACryptoServiceProvider(); EntidadesEmpresariales.PadreCipolCliente objUsuarioCipol; TresDES objEncriptarNET; General objGeneral; try { strUsuario = NombreUsuario.Trim(); if (string.IsNullOrEmpty(strUsuario)) { objRetIS.Mensaje = "El nombre del usuario es un dato obligatorio."; objRetIS.ResultadoProcesoInicioSesion = false; return(objRetIS); } if (Pwd.Trim() == string.Empty) { objRetIS.Mensaje = "La contraseña es un dato obligatorio."; objRetIS.ResultadoProcesoInicioSesion = false; return(objRetIS); } strClave = Pwd; ManejoSesion.CookieMaster = cokie; System.Net.CookieContainer objCookieMASTER = ManejoSesion.CookieMaster; bytPub = facInicioSesion.GetClavePublica(objEncCli.ExportCspBlob(false), objCookieMASTER); if ((bytPub == null)) { objRetIS.Mensaje = "No se ha podido recuperar la clave pública."; objRetIS.ResultadoProcesoInicioSesion = false; return(objRetIS); } // Prepara el algoritmo asimétrico del servidor objEncServ.ImportCspBlob(bytPub); // Encripta con la clave pública strClave = System.Convert.ToBase64String(objEncServ.Encrypt(System.Text.UTF8Encoding.UTF8.GetBytes(strClave), false)); strTerminal = COA.WebCipol.Presentacion.Utiles.cPrincipal.ObtenerTerminal(ip); strCipol = facInicioSesion.IniciarSesion(strUsuario, strTerminal, ref strError, strClave, objCookieMASTER); if (strCipol == null || string.IsNullOrEmpty(strCipol)) { objRetIS.Mensaje = "No se ha podido iniciar sesión" + (String.IsNullOrEmpty(strError) ? "" : ": " + strError).ToString(); objRetIS.ResultadoProcesoInicioSesion = false; return(objRetIS); } if (Validaciones.ValidarCadenaNulaOVacia(strError)) { objRetIS.Mensaje = strError; objRetIS.ResultadoProcesoInicioSesion = false; return(objRetIS); } //Dim objFlujo As System.IO.MemoryStream System.IO.MemoryStream objFlu; //Dim objDeserializador As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter() System.Runtime.Serialization.Formatters.Binary.BinaryFormatter objDeser = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); //Dim objSerializar As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter() System.Runtime.Serialization.Formatters.Binary.BinaryFormatter objSerializar = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); //objFlujo = New System.IO.MemoryStream(System.Convert.FromBase64CharArray(pStrCipol.ToCharArray, 0, pStrCipol.Length)) objFlu = new System.IO.MemoryStream(System.Convert.FromBase64CharArray(strCipol.ToCharArray(), 0, strCipol.Length)); //gobjUsuarioCipol = CType(objDeserializador.Deserialize(objFlujo), EntidadesEmpresariales.PadreCipolCliente) objUsuarioCipol = (EntidadesEmpresariales.PadreCipolCliente)objDeser.Deserialize(objFlu); //Desencripta los valores encriptados en el servidor con la clave pública del RSA cliente //gobjUsuarioCipol.OtrosDatos("clave.usuario", System.Text.UTF8Encoding.UTF8.GetString(objEncCli.Decrypt(System.Convert.FromBase64String(gobjUsuarioCipol.OtrosDatos("clave.usuario")), False))) objUsuarioCipol.OtrosDatos("clave.usuario", System.Text.UTF8Encoding.UTF8.GetString(objEncCli.Decrypt(System.Convert.FromBase64String(objUsuarioCipol.OtrosDatos("clave.usuario")), false))); //gobjUsuarioCipol.Key = System.Convert.ToBase64String(objEncCli.Decrypt(System.Convert.FromBase64String(gobjUsuarioCipol.Key), False)) objUsuarioCipol.Key = System.Convert.ToBase64String(objEncCli.Decrypt(System.Convert.FromBase64String(objUsuarioCipol.Key), false)); //gobjUsuarioCipol.IV = System.Convert.ToBase64String(objEncCli.Decrypt(System.Convert.FromBase64String(gobjUsuarioCipol.IV), False)) objUsuarioCipol.IV = System.Convert.ToBase64String(objEncCli.Decrypt(System.Convert.FromBase64String(objUsuarioCipol.IV), false)); //TODO: VER QUE PASA CON LAS COOKIES //gobjUsuarioCipol.objColeccionDeCookies = pCookies //objUsuarioCipol.objColeccionDeCookiesCipol = //gobjUsuarioCipol.gobjRSAServ = objEncServ.ExportCspBlob(False) objUsuarioCipol.gobjRSAServ = objEncServ.ExportCspBlob(false); //gobjUsuarioCipol.OtrosDatos("urlwsInicioSesion", UrlWsInicioSesion) //objFlujo = New System.IO.MemoryStream() //objFlu= new System.IO.MemoryStream(); //objSerializar.Serialize(objFlujo, gobjUsuarioCipol) //objSerializar.Serialize(objFlu, objUsuarioCipol); //gstrUsuarioCipol = System.Convert.ToBase64String(objFlujo.ToArray()) //gstrUsuarioCipol = System.Convert.ToBase64String(objFlujo.ToArray()) //Crea el objeto para encriptar. objEncriptarNET = new TresDES(); objEncriptarNET.IV = objUsuarioCipol.IV; objEncriptarNET.Key = objUsuarioCipol.Key; //Crea el objeto con datos generales del usuario/sistema. objGeneral = new General(System.Reflection.Assembly.GetExecutingAssembly()); objGeneral.AcercaDe_Descripcion = "Componente de Seguridad. Desarrollado por COA S.A."; objGeneral.AcercaDe_Detalle = "Configurador Interactivo de Políticas de seguridad de los sistemas. Resuelve las funciones operativas propias de la seguridad de sistemas (implementación de políticas, administración de usuarios, roles, acceso a subsistemas)."; //TODO: HAY QUE EVALUAR COMO SE TRABAJA CON ESTA INFORMACION SI ES NECESARIA //objGeneral.AcercaDe_Logo = objGeneral.RutaArchivos + "img_CIPOL_CIPOL.jpg"; //objGeneral.AcercaDe_Logo = "Imagenes/prod_cipol.gif";//PRUEBA.. ver la imagen a poner!! //objGeneral.AcercaDe_Icono = objGeneral.RutaArchivos + "CIPOL32.ico"; objGeneral.AcercaDe_Cliente = objUsuarioCipol.NombreOrganizacion; objGeneral.UsuarioCIPOL = objUsuarioCipol.Login; objGeneral.Hoy = objUsuarioCipol.FechaServidor; //Pasa al objeto Datos Sistema, que se va a guardar en sesión. //objDatosS.NombreSistema = objGeneral.NombreSistema; //objDatosS.EncriptarNET = objEncriptarNET; DatosSistema objDatosS = new DatosSistema(); objDatosS.DatosGenerales = objGeneral; //Pasa al objeto de Retorno. objRetIS.DatosSistema = objDatosS; DatosCIPOL objDatosC = new DatosCIPOL(); objDatosC.DatosPadreCIPOLCliente = objUsuarioCipol; objDatosC.strCipol = strCipol; objDatosC.DatosPadreCIPOLCliente.objColeccionDeCookies = objCookieMASTER; objDatosC.DatosPadreCIPOLCliente.objColeccionDeCookiesCipol = objCookieMASTER; objRetIS.DatosCipol = objDatosC; objRetIS.Mensaje = "El proceso de inicio de sesión se realizó exitosamente"; objRetIS.ResultadoProcesoInicioSesion = true; return(objRetIS); } catch (Exception ex) { COA.Logger.Logueador.Loggear(ex, System.Diagnostics.EventLogEntryType.Error); objRetIS.ResultadoProcesoInicioSesion = false; objRetIS.Mensaje = "Ocurrió un error en el proceso de inicio de sesión."; return(objRetIS); } }