/// <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); }