Ejemplo n.º 1
0
        /// <summary>
        /// Método encargado de Generar un Nuevo Token de Autenticación de Usuario por Compania
        /// </summary>
        /// <param name="id_usuario_registro"></param>
        /// <param name="id_compania"></param>
        /// <param name="id_usuario"></param>
        /// <param name="token_nvo"></param>
        /// <returns></returns>
        public static RetornoOperacion GeneraNuevoTokenUsuario(int id_usuario_registro, int id_compania, int id_usuario, out string token_nvo)
        {
            RetornoOperacion retorno = new RetornoOperacion();

            token_nvo = "";

            //Obteniendo Clave de Encriptación (Aleatorio)
            string llave_encriptacion = Cadena.CadenaAleatoria(1, 2, 1);

            if (!llave_encriptacion.Equals(""))
            {
                //Obteniendo Método de Encriptación (Aleatorio)
                Random r = new Random();
                Encriptacion.MetodoDigestion clave_enc = (Encriptacion.MetodoDigestion)r.Next(1, 3);
                if (clave_enc != Encriptacion.MetodoDigestion.SinAsignar)
                {
                    //Generando TOKEN
                    retorno = generaTokenUsuario(id_usuario_registro, clave_enc, llave_encriptacion, id_compania, id_usuario, out token_nvo);
                }
                else
                {
                    retorno = new RetornoOperacion("La clave de encriptacion correctamente");
                }
            }
            else
            {
                retorno = new RetornoOperacion("El token no se genero correctamente");
            }

            return(retorno);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Método encargado de Generar un Nuevo Token de Autenticación de Usuario por Compania
        /// </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_nvo"></param>
        /// <returns></returns>
        public static RetornoOperacion GeneraNuevoTokenUsuario(int id_usuario_registro, Encriptacion.MetodoDigestion clave_encriptacion, string llave_encriptacion, int id_compania, int id_usuario, out string token_nvo)
        {
            RetornoOperacion retorno = new RetornoOperacion();

            token_nvo = "";
            //Generando TOKEN
            retorno = generaTokenUsuario(id_usuario_registro, clave_encriptacion, llave_encriptacion, id_compania, id_usuario, out token_nvo);
            return(retorno);
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
 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));
 }