/// <summary> /// Metodo Valida Token /// </summary> private void ValidandoToken() { //Asigna a control NoServicio el valor del queryString this._token = Convert.ToString(Request.QueryString["ustk"]); //Instanciando Token using (SAT_CL.Seguridad.UsuarioToken objtoken = new SAT_CL.Seguridad.UsuarioToken(this._token)) using (SAT_CL.Seguridad.Usuario objusuario = new SAT_CL.Seguridad.Usuario(objtoken.id_usuario_registra)) { if (objtoken.habilitar && objusuario.habilitar) { //AutenticandoUsuario autenticaUsuario(objusuario.email); } else { //Obteniendo Acceso por Defecto string acceso = TSDK.Base.Cadena.RutaRelativaAAbsoluta("~/Externa/Login.aspx", "~/Externa/TokenInvalido.aspx"); if (!acceso.Equals("")) { //Redireccionando a forma por Default Response.Redirect(acceso); } } } }
/// <summary> /// Inicializando contenido de GV /// </summary> private void inicializaForma() { //Recupera token this._token = Convert.ToString(Request.QueryString["ustk"]); //Instanciando using (SAT_CL.Seguridad.UsuarioToken objtoken = new SAT_CL.Seguridad.UsuarioToken(this._token)) using (SAT_CL.Seguridad.Usuario objUsario = new SAT_CL.Seguridad.Usuario(objtoken.id_usuario_registra)) using (SAT_CL.Seguridad.PerfilSeguridadUsuario objperfilactivo = SAT_CL.Seguridad.PerfilSeguridadUsuario.ObtienePerfilActivo(objUsario.id_usuario)) { if (objtoken.habilitar && objUsario.habilitar && objperfilactivo.habilitar) { //Cargando lista de reportes de la compañía CapaNegocio.m_capaNegocio.CargaCatalogo(ddlReporte, 198, "- Seleccione un Reporte -", objtoken.id_compania, Convert.ToString(objperfilactivo.id_perfil), 0, ""); } else { Error(); } } }
/// <summary> /// /// </summary> /// <param name="id_usuario"></param> /// <param name="id_compania"></param> /// <returns></returns> public static UsuarioToken ObtieneTokenActivo(int id_usuario, int id_compania) { UsuarioToken token_activo = new UsuarioToken(); //Armando Arreglo de Parametros object[] param = { 4, 0, id_usuario, id_compania, 0, 0, "", "", 0, null, null, 0, false, "", "" }; //Obteniendo Registro del SP using (DataSet ds = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoDataSet(_nombre_stored_procedure, param)) { //Validando que Exista el Registro if (TSDK.Datos.Validacion.ValidaOrigenDatos(ds, "Table")) { //Iniciando Ciclo foreach (DataRow dr in ds.Tables["Table"].Rows) { DateTime fec_creacion, fec_termino; DateTime.TryParse(dr["FechaCreacion"].ToString(), out fec_creacion); DateTime.TryParse(dr["FechaTermino"].ToString(), out fec_termino); token_activo = new UsuarioToken { //Asignando Atributos _id_usuario_token = Convert.ToInt32(dr["Id"]), _id_usuario_registra = Convert.ToInt32(dr["IdUsuarioRegistra"]), _id_compania = Convert.ToInt32(dr["IdCompania"]), _secuencia = Convert.ToInt32(dr["Secuencia"]), _id_clave_encriptacion = Convert.ToInt32(dr["IdClaveEncriptacion"]), _llave_encriptacion = dr["LlaveEncriptacion"].ToString(), _token = dr["Token"].ToString(), _vigencia = Convert.ToInt32(dr["Vigencia"]), _estatus = dr["Estatus"].ToString(), _fecha_creacion = fec_creacion, _fecha_termino = fec_termino, _habilitar = Convert.ToBoolean(dr["Habilitar"]) }; break; } } } return(token_activo); }
/// <summary> /// /// </summary> /// <param name="id_usuario_registro"></param> /// <param name="clave_encriptacion"></param> /// <param name="llave_encriptacion"></param> /// <param name="id_compania"></param> /// <param name="id_usuario"></param> /// <param name="token_usuario"></param> /// <returns></returns> private static RetornoOperacion generaTokenUUID(int id_usuario_registro, string llave_encriptacion, int id_compania, int id_usuario, int vigencia, out string token_usuario) { RetornoOperacion retorno = new RetornoOperacion(); DateTime fecha_actual = Fecha.ObtieneFechaEstandarMexicoCentro(); token_usuario = ""; if (llave_encriptacion.Length <= 10) { //Validando Usuario using (Usuario user = new Usuario(id_usuario_registro)) { if (user.habilitar) { using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { using (UsuarioToken activo = UsuarioToken.ObtieneTokenActivo(id_usuario_registro, id_compania)) { if (!activo.habilitar) { //Generando Resultado Positivo retorno = new RetornoOperacion(id_usuario, "Listo para Crear el Token", true); } else { //Terminando TOKEN retorno = activo.TerminaUsuarioToken(id_usuario); if (retorno.OperacionExitosa) { //Generando Resultado Positivo retorno = new RetornoOperacion(id_usuario, "Listo para Crear el Token", true); } } } if (retorno.OperacionExitosa) { //CrearToken token_usuario = Guid.NewGuid().ToString(); //Validando se genero el token //if (retorno.OperacionExitosa) //{ retorno = SAT_CL.Seguridad.UsuarioToken.InsertaUsuarioToken(id_usuario_registro, id_compania, 0, 1, llave_encriptacion, token_usuario, vigencia, fecha_actual, DateTime.MinValue, id_usuario); while (!retorno.OperacionExitosa) { //CrearToken token_usuario = Guid.NewGuid().ToString(); retorno = UsuarioToken.InsertaUsuarioToken(id_usuario_registro, id_compania, 0, 1, llave_encriptacion, token_usuario, vigencia, fecha_actual, DateTime.MinValue, id_usuario); if (retorno.OperacionExitosa) { break; } } if (retorno.OperacionExitosa) { retorno = new RetornoOperacion(retorno.IdRegistro, "Token Generado Exitosamente!", true); //Completando Transacción scope.Complete(); } //} } } } else { retorno = new RetornoOperacion("El usuario que ingreso, es invalido"); } } } else { retorno = new RetornoOperacion("La llave de encriptación debe de ser de 10 caracteres máximo"); } return(retorno); }
/// <summary> /// /// </summary> /// <param name="id_usuario_registro"></param> /// <param name="clave_encriptacion"></param> /// <param name="llave_encriptacion"></param> /// <param name="id_compania"></param> /// <param name="id_usuario"></param> /// <param name="token_usuario"></param> /// <returns></returns> private static RetornoOperacion generaTokenUsuario(int id_usuario_registro, Encriptacion.MetodoDigestion clave_encriptacion, int vigencia, string llave_encriptacion, int id_compania, int id_usuario, out string token_usuario) { RetornoOperacion retorno = new RetornoOperacion(); DateTime fecha_actual = Fecha.ObtieneFechaEstandarMexicoCentro(); token_usuario = ""; if (llave_encriptacion.Length <= 10) { string llave64 = Encriptacion.CalculaHashCadenaEnBase64(llave_encriptacion, clave_encriptacion); //Validando Usuario using (Usuario user = new Usuario(id_usuario_registro)) { if (user.habilitar) { using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { using (UsuarioToken activo = UsuarioToken.ObtieneTokenActivo(id_usuario_registro, id_compania)) { if (!activo.habilitar) { //Generando Resultado Positivo retorno = new RetornoOperacion(id_usuario, "Listo para Crear el Token", true); } else { //Terminando TOKEN retorno = activo.TerminaUsuarioToken(id_usuario); if (retorno.OperacionExitosa) { //Generando Resultado Positivo retorno = new RetornoOperacion(id_usuario, "Listo para Crear el Token", true); } } } if (retorno.OperacionExitosa) { //Creando Clave para encriptación string pre_token = string.Format("{0:0000}{1:yyyyMMdd_HHmm}", user.id_usuario, fecha_actual); //Encriptando en Clave AES token_usuario = Encriptacion.EncriptaCadenaAESEnBase64(pre_token, llave64); if (!token_usuario.Equals("")) { retorno = new RetornoOperacion(user.id_usuario, "Token generado exitosamente.", true); } else { retorno = new RetornoOperacion("El token no se genero correctamente"); } if (retorno.OperacionExitosa) { retorno = UsuarioToken.InsertaUsuarioToken(id_usuario_registro, id_compania, 0, (int)clave_encriptacion, llave64, token_usuario, vigencia, fecha_actual, DateTime.MinValue, id_usuario); if (retorno.OperacionExitosa) { retorno = new RetornoOperacion(retorno.IdRegistro, "Token Generado Exitosamente!", true); //Completando Transacción scope.Complete(); } } } } } else { retorno = new RetornoOperacion("El usuario que ingreso así como Clarita, es invalido"); } } } else { retorno = new RetornoOperacion("La llave de encriptación debe de ser de 10 caracteres máximo"); } return(retorno); }
private static RetornoOperacion generaTokenUsuario(int id_usuario_registro, Encriptacion.MetodoDigestion clave_encriptacion, string llave_encriptacion, int id_compania, int id_usuario, out string token_usuario) { token_usuario = ""; return(UsuarioToken.generaTokenUsuario(id_usuario_registro, clave_encriptacion, 1, llave_encriptacion, id_compania, id_usuario, out token_usuario)); }
/// <summary> /// Cambio en la selección del reporte a visualizar /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void ddlReporte_SelectedIndexChanged(object sender, EventArgs e) { //Asigna Atributos asignaAtributos(); //Instanciando using (SAT_CL.Seguridad.UsuarioToken objtoken = new SAT_CL.Seguridad.UsuarioToken(this._token)) using (SAT_CL.Seguridad.Usuario objUsario = new SAT_CL.Seguridad.Usuario(objtoken.id_usuario_registra)) using (SAT_CL.Global.CompaniaReporte objReporte = new SAT_CL.Global.CompaniaReporte(Convert.ToInt32(ddlReporte.SelectedValue))) { if (objtoken.habilitar && objUsario.habilitar && objReporte.habilitar) { if (objReporte.habilitar) { //En base al tipo de reporte definido para el botón switch (objReporte.id_tipo_reporte) { case 1: { rvSSRS.Visible = true; rvPBI.Visible = false; rvAND.Visible = false; //Instanciando reporte seleccionado using (SAT_CL.Global.CompaniaReporte reporte = new SAT_CL.Global.CompaniaReporte(Convert.ToInt32(ddlReporte.SelectedValue))) { /*** CONFIGURANDO VISOR DE REPORTE ***/ //Indicando el servidor al que será conectado el visor rvSSRS.ServerReport.ReportServerUrl = new Uri(ConfigurationManager.AppSettings["ServidorSSRS"]); //Credenciales de Autenticación en servidor de reportes rvSSRS.ServerReport.ReportServerCredentials = new SAT_CL.Seguridad.CredencialServidorReportes(ConfigurationManager.AppSettings["UsuarioSSRS"], ConfigurationManager.AppSettings["ContrasenaSSRS"], ConfigurationManager.AppSettings["DominioSSRS"]); //ASigna al reporte la variable compania rvSSRS.ServerReport.ReportPath = reporte.url_reporte_ssrs; ReportParameter param = new ReportParameter("param1", Convert.ToString(objtoken.id_compania)); rvSSRS.ServerReport.SetParameters(new ReportParameter[] { param }); } break; } case 2: { rvSSRS.Visible = false; rvPBI.Visible = false; rvAND.Visible = false; break; } case 3: { rvSSRS.Visible = false; rvPBI.Visible = true; rvAND.Visible = false; break; } case 4: { rvSSRS.Visible = false; rvPBI.Visible = false; rvAND.Visible = true; break; } } } else { Error(); } } else { Error(); } } }