public vTipoSeguridadAdministrar AdministrarTipoSeguridad(vTipoSeguridad obj) { try { vTipoSeguridadAdministrar objRetorno = new vTipoSeguridadAdministrar(); Fachada.FSeguridad objFachada = new FSeguridad(); if (string.IsNullOrEmpty(obj.NombreOrganizacion.Trim())) { objRetorno.ResultadoEjecucion = false; objRetorno.MensajeError = "El nombre de la organización es un dato obligatorio"; return(objRetorno); } if (obj.optIntegrada) { if (string.IsNullOrEmpty(obj.NombreDominio.Trim())) { objRetorno.ResultadoEjecucion = false; objRetorno.MensajeError = "El nombre de dominio es un dato obligatorio"; return(objRetorno); } } else { if (obj.validar) { if (string.IsNullOrEmpty(obj.NombreDominio.Trim())) { objRetorno.ResultadoEjecucion = true; objRetorno.preguntar = true; objRetorno.MensajeError = "No se ha ingresado un nombre de Dominio, solo se podrán ingresar usuarios no integrados a un dominio. ¿Continúa?"; return(objRetorno); } } } string strRetorno = ""; if (!string.IsNullOrEmpty(obj.NombreDominio.Trim()) && obj.NombreDominio.Trim().ToUpper() != "NULL") { if (string.IsNullOrEmpty(obj.Usuario.Trim())) { objRetorno.ResultadoEjecucion = false; objRetorno.MensajeError = "El nombre del usuario es un dato obligatorio"; return(objRetorno); } if (obj.validar) { objRetorno.ResultadoEjecucion = true; objRetorno.preguntar = true; objRetorno.MensajeError = "A continuación" + " va a verificar si nombre de dominio " + obj.NombreDominio + " es válido. Esta operación puede tardar cierto tiempo. ¿Continúa?"; return(objRetorno); } if (obj.validarDominio) { string strDomino = ""; strDomino = ObtenerPrimaryDomain(obj.NombreDominio, obj.Usuario, obj.Clave); if (string.IsNullOrEmpty(strDomino)) { objRetorno.ResultadoEjecucion = false; objRetorno.MensajeError = "No se ha podido validar la existencia del domino " + obj.NombreDominio + ". Verifique los datos ingresados."; return(objRetorno); } strRetorno = strDomino; } } strRetorno += "æ" + obj.NombreOrganizacion.Trim() + ((obj.optCIPOL) ? "æ1" : ""); TresDES objEncriptarNET; objEncriptarNET = new TresDES(); objEncriptarNET.IV = ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.IV; objEncriptarNET.Key = ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.Key; if (objFachada.ActualizarTipoSeguridad(objEncriptarNET.Criptografia(Accion.Encriptacion, strRetorno))) { objRetorno.ResultadoEjecucion = true; objRetorno.MensajeServicio = "Deberá reiniciar la aplicación para que los cambios tengan efecto."; return(objRetorno); } else { objRetorno.ResultadoEjecucion = true; objRetorno.MensajeServicio = "No se ha podido modificar el manejo de seguridad de CIPOL, por favor vuelva a intentar."; return(objRetorno); } } catch (Exception ex) { throw (ex); } }
/// <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); } }
public bool CargarParametros(ref string MensajeError) { ///'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' //Autor: Gustavo Mazzaglia //Fecha de creación: 28/12/2001 //Modificaciones: // 09/09/2005 - Angel Lubenov - Gcp Cambios id:3044 ///'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' // DESCRIPCION DE VARIABLES LOCALES //strParam : Array que va a contener los parámetros de políticas de seguridad ///'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' string[] strParam = null; //Crea el objeto de encriptacion TresDES objEncriptarNET = objEncriptarNET = new TresDES(); objEncriptarNET.IV = ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.IV; objEncriptarNET.Key = ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.Key; //Recupera los parámetros generales. Fachada.FSeguridad facSEG = new Fachada.FSeguridad(); ManejoSesion.gdtsAuditoria = facSEG.RecuperarDatosParaEntornoCIPOLAdministrador(); if (ManejoSesion.gdtsAuditoria == null) { MensajeError = "No se han podido recuperar las políticas generales de seguridad"; return(false); } //Parámetros Vacíos?? if (ManejoSesion.gdtsAuditoria == null || ManejoSesion.gdtsAuditoria.lstParametros.Count().Equals(0)) { MensajeError = "No se han podido recuperar las políticas generales de seguridad"; return(false); } //Desencripta Parámetros. strParam = Strings.Split(objEncriptarNET.Criptografia(Accion.Desencriptacion, ManejoSesion.gdtsAuditoria.lstParametros[0].COLUMNA4), Constantes.gstrSepParam); ManejoSesion.gudParam = new Constantes.gudtParametros(); ManejoSesion.gudParam.LongitudContraseña = short.Parse(strParam[3]); ManejoSesion.gudParam.DuracionContraseña = Int32.Parse(strParam[4]); ManejoSesion.gudParam.CantidadContraseñasAlmacenadas = Int32.Parse(strParam[7]); ManejoSesion.gudParam.TiempoEnDiasNoPermitirCambiarContrasenia = Int32.Parse(strParam[5]); ManejoSesion.gudParam.NivelSeguridadContraseña = (Constantes.genuNivelSeguridad) short.Parse(objEncriptarNET.Criptografia(Accion.Desencriptacion, ManejoSesion.gdtsAuditoria.lstParametros[0].COLUMNA5)); //Angel Lubenov - PARAMETRO 12, éste //indica el modo de seguridad aplicado a la hora de //asignar nuevos usuaris y/o roles, si está en modo //PERMISIVO (0) las tareas a los usuarios que ya //posean el rol en cuestion, aparecerán habilitadas, //si el modod e seguridad es RESTRICTIVO (1), entonces //las tareas apareceran deshabilitadas //verificamos si la directiva de seguridad //no estaba en el sistema (esto es un control por //viejas versiones) if (strParam.Length < 13) { ManejoSesion.gudParam.ModoAsignacionTareasYRoles = 1; } else { ManejoSesion.gudParam.ModoAsignacionTareasYRoles = short.Parse(strParam[12]); } return(true); }
public Retorno NuevaTerminal(Filtro[] filtro) { Terminal filtro2 = new Terminal(); TresDES objEncriptarNET; Retorno objRetorno = new Retorno(); dcAdministrarTerminales dcDatos = new dcAdministrarTerminales(); COA.WebCipol.Entidades.ClasesWs.dcAdministrarTerminales.SE_TERMINALES rowTerm = new COA.WebCipol.Entidades.ClasesWs.dcAdministrarTerminales.SE_TERMINALES(); int shtID = 0; string strPath = null; string[] strdom = null; Int32 inti = default(Int32); DirectoryEntry objIngreso = default(DirectoryEntry); DirectorySearcher objBuscar = default(DirectorySearcher); SearchResult objResultado = default(SearchResult); FSeguridad objFacTerminales = new FSeguridad(); objEncriptarNET = new TresDES(); objEncriptarNET.IV = ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.IV; objEncriptarNET.Key = ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.Key; if (string.IsNullOrEmpty(filtro2.codterminal.Trim())) { objRetorno.MensajeError = "El Código de Terminal es un dato obligatorio."; objRetorno.ResultadoEjecucion = false; return(objRetorno); } else { if (VerificarSiExisteCODTERMINAL()) { objRetorno.MensajeError = "El Código de Terminal ya existe."; objRetorno.ResultadoEjecucion = false; return(objRetorno); } } //GCP-Cambio ID: 9145 if (string.IsNullOrEmpty(filtro2.codterminal.Trim())) { objRetorno.MensajeError = "El Nombre NETBIOS es un dato obligatorio."; objRetorno.ResultadoEjecucion = false; return(objRetorno); } else { string strErrorNombre = VerifNombreNETBIOS(filtro2.nombrecomputadora.Trim()); if (string.IsNullOrEmpty(strErrorNombre)) { if (VerificarSiExisteNombreComputadora()) { objRetorno.MensajeError = "El Nombre NETBIOS es un dato obligatorio."; objRetorno.ResultadoEjecucion = false; return(objRetorno); } } else { objRetorno.MensajeError = strErrorNombre; objRetorno.ResultadoEjecucion = false; return(objRetorno); } } //[AngelL] 20/02/2005 - Verificacion de la pc contra el dominio //si se usa seguridad integrada. //Una vez seguros que la información sobre el NombreNetBios fué //cargada, ActiveDirectory validará que el nombre exista en su //base si la seguridad es integrada. //si el dominio no es nulo, o sea, si se esta usando //seguridad integrada al dominio, se verifica //la pc contra el servicio de directorio usando la sintaxis LDAP if (ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.Seguridad_SoloDominio) { try { strPath = "LDAP://"; strdom = ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.NombreDominio.Split('.'); for (inti = 0; inti <= strdom.GetUpperBound(0); inti++) { strPath += "DC="; strPath += strdom[inti]; strPath += ","; } strPath = strPath.Substring(0, strPath.Length - 1); objIngreso = new DirectoryEntry(strPath); //construido el path, se agrega el filtro al buscador de //directorio objBuscar = new DirectorySearcher(objIngreso); objBuscar.Filter = "(&(objectClass=computer)(cn=" + filtro2.nombrecomputadora.Trim() + "))"; objResultado = objBuscar.FindOne(); } catch (Exception ex) { objResultado = null; objRetorno.MensajeError = ex.Message; //lblMSJAltaModif.Text = ex.StackTrace; } //si no se obtuvieron resultados, se advierte if (objResultado == null) { objRetorno.MensajeError = "La terminal indicada no pertenece al Dominio " + ManejoSesion.DatosCIPOLSesion.DatosPadreCIPOLCliente.NombreDominio + " o en este momento no se puede establecer conexión con el Dominio. Verifique. Terminal no encontrada."; objRetorno.ResultadoEjecucion = false; return(objRetorno); } } //if (this.cboAreas.SelectedIndex == 0) if (filtro2.idarea.Equals(0)) { objRetorno.MensajeError = "La Ubicación Física de la terminal es un datos obligatorio."; objRetorno.ResultadoEjecucion = false; return(objRetorno); } //Si es un alta de terminal if (filtro2.idterminal == 1) { rowTerm = new COA.WebCipol.Entidades.ClasesWs.dcAdministrarTerminales.SE_TERMINALES(); rowTerm.IDTERMINAL = -1; } else { rowTerm.IDTERMINAL = Convert.ToInt32(filtro2.idterminal); } rowTerm.CODTERMINAL = filtro2.codterminal; //this.txtCodTerminal.Text.Trim(); rowTerm.NOMBRECOMPUTADORA = filtro2.nombrecomputadora; //this.txtNombreTerminal.Text.Trim(); rowTerm.NOMBREAREA = filtro2.nombrearea; //this.cboAreas.SelectedItem.ToString().Trim(); rowTerm.IDAREA = System.Convert.ToInt16(filtro2.idarea); //this.cboAreas.SelectedValue rowTerm.USOHABILITADO = objEncriptarNET.Criptografia(Accion.Encriptacion, (filtro2.Habilitada ? "1" : "0").ToString()); rowTerm.MODELOPROCESADOR = filtro2.modeloprocesador; //this.txtProcesador.Text; rowTerm.CANTMEMORIARAM = Convert.ToInt16(filtro2.cantmemoriaram); rowTerm.TAMANIODISCO = Convert.ToInt16(filtro2.tamaniodisco); rowTerm.MODELOACELVIDEO = filtro2.modeloacelvideo; rowTerm.DESCADICIONAL = filtro2.descadicional; rowTerm.MODELOMONITOR = filtro2.modelomonitor; if (filtro2.origenactualizacion == "R") { rowTerm.ORIGENACTUALIZACION = "R"; } else { rowTerm.ORIGENACTUALIZACION = "L"; } dcDatos.lstSE_TERMINALES.Add(rowTerm); if (filtro2.idterminal == 0) { shtID = objFacTerminales.AdministrarTerminales(dcDatos); if (shtID == 0) { objRetorno.MensajeError = "No se han podido actualizar los datos de la terminal en el servidor."; objRetorno.ResultadoEjecucion = false; } else { //LimpiarControles(); ////lblMSJAltaModif.Text = "Los datos fueron guardados"; //ScriptManager.RegisterStartupScript(this, GetType(), "", "alert('Los datos fueron guardados.');", true); objRetorno.MensajeError = "Los datos fueron guardados."; objRetorno.ResultadoEjecucion = false; } } else { if (objFacTerminales.AdministrarTerminales(dcDatos) > 0) { //MostrarFormAltaModif(false); //LlenarGrilla(); objRetorno.MensajeServicio = "Los datos fueron guardados"; objRetorno.ResultadoEjecucion = true; } else { //MostrarFormAltaModif(false); objRetorno.MensajeError = "No se han podido actualizar los datos de la terminal en el servidor."; objRetorno.ResultadoEjecucion = false; } } //Retorna el resultado return(objRetorno); }