Beispiel #1
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 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);
        }
Beispiel #2
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);
        }