Todos los días miles de sitios web son atacados mediante técnicas cada vez mas sofisticadas, lo cual hace indispensable, en toda organización, tomarse un tiempo prodencial en pensar y repensar la seguridad en la web

¿Qué nos ofrece Google Recaptcha Enterprise?

A modo de resumen: un servicio capaz de indicarnos si la interacción de un determinado usuario (probablemente un bot) se encuentra dentro de un determindo rango (area de riesgo)

El scoring de riesgo nos provee un número (entre 0.0 y 1.0) siendo 0.0 altisimo riesgo y 1.0 confianza total

Mas info aqui https://cloud.google.com/recaptcha-enterprise

¿Qué necesito para empezar?

  1. Crea una API Key -> https://cloud.google.com/recaptcha-enterprise/docs/create-key
  2. Crea una Cuenta de Servicio ->…

La solución

En la actualidad, gran cantidad de empresas comparte informes de todo tipo (financieros, reportes de uso, diagnostico, etc) a otras empresas, con las cuales cumplen contrato, mediante SFTP (Secure File Transfer Protocol)

¿Cómo me conecto a un SFTP?

Esta pregunta tiene varias formas de responderse, entre las mas conocidas/utilizadas se encuentra el mecanismo que provee Spring Integration.

En este caso, solo me tomaré el tiempo de responder esta pregunta sin hacer uso de Frameworks robustos.

Para tal fin utilizaremos solamente 2 librerias

jsch-extension
commons-pool2 (Apache Commons)

Con estas librerias a la mano podemos primero conectarnos al SFTP y con Apache Commons Pool2 podremos gestionar las conexiones…


Un escenario muy habitual en la vida de todo desarrollador, que utiliza los servicios de Google Cloud Platform (GCP), es toparse con el problema de consumir un servicio en dicha nube

¿Dónde estan los tokens?

Revisando la documentación siempre veremos que Google nos indica que tenemos que utilizar OAuth 2.0 y generar Tokens mediante un mecanismo no del todo claro para los que no somos expertos en protocolos de autenticatión

Luego de un largo rato leyendo la documentación te encuentras con la frustración de no poder digerir tanto embrollo, para lo cual recurres a StackOverflow y…

Vemos que este caballero ingles ha llegado donde…


En la vida de todo desarrollador, en un mundo de microservicios, es habitual toparse con el problema de la gestión de los secretos.

El escenario mas natural es un repositorio en Github, Gitlab, Bitbucket o similar, el cual debe consumir servicios de todo tipo que, casi siempre, requieren autenticación (cuentas de servicio, tokens, jwt’s, usuario/password, etc)

Por cuestiones de auditoria resulta imposible colocar los secretos en texto plano e incluirlas en el repositorio

Esquema pensado en equipos agiles

Tu equipo seguramente es del tipo agil, con backlogs en Jira, Trello o alguno similar, con lo cual podemos admitir que tu equipo tendrá una eventual identidad.


Una de las virtudes que posee Kubernetes es su robustez y flexibilidad. Esto lo logra introduciendo el concepto de recurso, el cual puede ser configurado de amplias maneras.

Si bien es bueno tener un orquestador capaz de adaptarse a multiples escenarios esta caracteristica es su principal debilidad dado que:

  • Se requiere un alto grado de conocimiento
  • Los cambios son tediosos
  • Las personas requieren mayor tiempo para estudiar el funcionamiento de los clusters
  • Se introducen facilmente errores debido a la gran cantidad de recursos a administrar

Helm a la carga

Naturalmente, existe una solución sencilla y elegante para gestionar la monstruosa complejidad de recursos en…


Cotidianamente recibimos miles de datos via mensajes de Whatsapp, emails, streaming de video, notificaciones y un sin numero de aplicaciones que pasan delante de nuestros ojos desapercibidos.

En este contexto se ha vuelto una necesidad contar con bases de datos capaces de conectarse con todo tipo de aplicaciones e informar los cambios en tiempo real.

Anteriormente, podriamos realizarel “polling” de los datos mediante procesos que consulten iterativamente una fuente de datos preguntando si hay un nuevo dato a consumir. Esta estrategia es simple pero de muy baja performance (consume demasiados recursos en momentos ociosos).

Para resolver este tema contamos con…


Muchas veces cuando comienzo un proyecto nuevo y necesito integrar pagos con MercadoPago atravieso los siguientes problemas:

  • Los pasos para crear items son complicados
  • El código es muy similar al último proyecto realizado con MercadoPago
  • La documentación existente es tediosa de utilizar

Si bien las herramientas disponibles como Postman o cURL facilitan la integración, son complicadas de manejar si los payloads son grandes.

Una idea

Pensando el fin de semana en casa se me ocurrió quitarme de encima dicha complejidad y decidí crear un Sandbox Web que me permita resolver rapidamente los problemas anteriores.

Con esto podré:

  • Copiar rapidamente el código necesario…

Conteinerizando la integración

Existen varios enfoques para realizar pruebas de integración en ecosistemas de microservicios. En esta ocasión comparto esta herramienta que me parece excelente para realizar dicha tarea: Testcontainers.

Qué es Testcontainers?

Es una libreria para Java con soporte en JUnit. Provee una manera sencilla, liviana y rápida para conectar nuestra aplicación, en fase de testing, a un gran número de servicios como ser bases de datos, colas de mensajeria y otros sistemas.

Ejemplo sencillo

Vamos a ejecutar la imágen de “hello-world” de Docker y validar que la respuesta a dicha ejecución sea correcta. Si bien es un ejemplo muy simple, la filosofia se repite para otro tipo de integraciones.

build.gradle

src/main/test/testcontainer/sample/LibraryTest.java

Ejemplo en video

Repositorio


El proceso de pago es vital en todo tipo de empresas del sector tecnológico, con lo cual es necesario contar con un proceso flexible y robusto.

El proceso

Enfoque redirect

Requerimientos

En este caso utilizaremos la siguiente configuración, contando con un proyecto Gradle

gradle.build

Configurando MercadoPago

Es necesario contar con un AccessToken. Lo pueden obtener desde la consola de MercadoPago

Crear una preferencia de pago

Una preferencia de pago o checkout representa la intención de una persona de ofrecer algun producto o servicio. En este caso lo haremos a traves de un endpoint llamado /createAndRedirect

Callbacks de regreso

Una vez que el pago fue procesado, se deben contar con URL’s configuradas y…


Uno de los desafios actuales a los que se enfrentan los equipos de desarrollo de software es en la creación y mantenibilidad de las imágenes Docker de los artefactos generados todos los dias.

En mi caso, utilizo frecuentemente el stack de Spring Boot y Spring Cloud para generar todo tipo de soluciones en la nube. Es habitual en mi rutina trabajar con un Dockerfile especifico para cada tipo de proyecto (Batch, Web, API Rest, etc).

Dada la cantidad de equipos que interactuan con mis artefactos y, teniendo en cuenta que muchas veces yo mismo necesitaré mantener los artefactos de otros…

Gonzalo Mendoza

Software engineer dedicated to the creation, deployment and continuity of software solutions. With criticality and a broad analytical sense

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store