Introducción
Contexto SPIN
SPIN by OXXO nace y crece de manera acelerada. Entre los diversos retos que tiene en su evolución del producto y mejorar la experiencia de sus usuarios, hoy su proceso de autorización de transacciones interbancarias o inter usuarios es validada con un código de seguridad.
...
Incrementar la seguridad migrando del código de seguridad a un token digital
Mitigar la problemática existente de bloqueo de transacciones por olvido de código de seguridad y no contar con un proceso de reseteo del mismo.
Objetivo general
Construir, en una primera fase, el desarrollo del motor generador de un token y, en una fase posterior, integrarlo con las pantallas del nuevo flujo para el front-end para autorización de transacciones vía el token digital para:
usuarios nuevos, en su onboarding habilitar su token
usuarios existentes, hacer su reemplazo de código de seguridad por token
usuarios hoy con código de seguridad bloqueado, resetear y habilitar su token
Índice
Table of Contents | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Propuesta de solución
Una vez iniciado el proyecto, el equipo comenzó a analizar y diseñar las bases en las que estaríamos trabajando y lograr el objetivo principal. Para ello, dedicamos tiempo en entender la solución enconjunto con el equipo involucrado en SPIN principalmente.
Se identificaron los siguientes componentes a desarrollar en el tiempo:
...
Marco tecnológico
Protocolo gRPC
En gRPC, una aplicación cliente puede llamar directamente a un método en una aplicación de servidor en una máquina diferente como si fuera un objeto local, lo que facilita la creación de aplicaciones y servicios distribuidos. Como en muchos sistemas RPC, gRPC se basa en la idea de definir un servicio, especificando los métodos que se pueden llamar de forma remota con sus parámetros y tipos de devolución. En el lado del servidor, el servidor implementa esta interfaz y ejecuta un servidor gRPC para manejar las llamadas de los clientes. En el lado del cliente, el cliente tiene un stub (denominado simplemente cliente en algunos idiomas) que proporciona los mismos métodos que el servidor.
...
Fuente: https://grpc.io/docs/what-is-grpc/introduction/ | Uso de gRPC
Protocolo REST
¿Qué es REST?
La transferencia de estado representacional (REST) es una arquitectura de software que impone condiciones sobre cómo debe funcionar una API. En un principio, REST se creó como una guía para administrar la comunicación en una red compleja como Internet. Es posible utilizar una arquitectura basada en REST para admitir comunicaciones confiables y de alto rendimiento a escala. Puede implementarla y modificarla fácilmente, lo que brinda visibilidad y portabilidad entre plataformas a cualquier sistema de API.
...
Pruebas automatizadas con Rest Assured
REST Assured es un DSL de Java para simplificar las pruebas de servicios basados en REST construidos sobre HTTP Builder. Admite solicitudes POST, GET, PUT, DELETE, OPTIONS, PATCH y HEAD y se puede utilizar para validar y verificar la respuesta de estas solicitudes.
Fuente: https://github.com/rest-assured/rest-assured/wiki/Usage
K6
¿Qué es k6?
Grafana k6 es una herramienta de pruebas de carga de código libre que hace fácil a equipos de software testear el rendimiento de sus aplicaciones.
...
Fuente: https://k6.io/docs/es/#que-es-k6
Entregables
A continuación, enlistaremos los entregables comprometidos para este proyecto y la documentación que dejamos como referencia para dar contexto e incluso la continuidad de la siguiente fase de implementación en los procesos que así lo considere SPIN.
Lo que podrán encontrar son los diseños de arquitectura, códigos fuente, documentación específica entre otros.
Token Digital
El Token Digital está compuesto de los siguientes componentes, los cuales se conectan al servicio de agregación que es el que se expone para ser consumido de acuerdo con los intereses que así lo considere SPIN.
...
Servicio | URL | ||
---|---|---|---|
Aggregation Service | |||
Token Service | |||
HSM Adapater Service | OTP Service | ffss-otp-service | |
Token Activation Service |
Autorización desde app web
Para implementar este flujo es necesario que la aplicación tenga una funcionalidad que permita generar un token digital y presentárselo al usuario para que lo ingrese en otro medio, por ejemplo una PWA. Los pasos a seguir son los siguientes:
Autenticación desde la página web y pantalla de solicitud de Token digital.
Generación de token digital en el dispositivo.
Validación de token digital y generación de token de autorización de acción protegida.
Validación de token de autorización de acción protegida y ejecución de acción protegida.
...
Mock del cliente
Se construyó un mock para realizar pruebas de desarrollo emulando un cliente de la aplicación utlizando .
Herramienta usada: Vue 2.
Escenario | Descripción | URL |
---|---|---|
Escenario básico | Este escenario agrupa las funcionalidades básicas para usar token digital desde un dispositivo | |
Escenario PWA | En éste escenario se usa el dispositivo para generar el TOTP y la validación se realiza en la PWA | https://fintechdigital.atlassian.net/wiki/spaces/TPP/pages/2385477827/Mock+cliente#Escenario-PWA |
Escenario de Autenticación vía OTP | Es este escenario el TOTP es generado y validado directamente por el servidor, para ello se transfiere al usuario el TOTP a través de un tercer factor de autenticación. |
Estrategia y ejecución de pruebas
Plan de estrategia
Para lograr los resultados esperados y considerar casos positivos y negativos se realizó una estrategia de pruebas para garantizar el uso correcto del framework de QA que se tiene en SPIN, nuestros desarrollos llegarán hasta staging, por lo que garantizar que funcione de acuerdo con lo diseñado, es de suma importancia para este proyecto.
Consulta el detalle del Plan de estrategia: Estrategia de Pruebas - Spin - Token Digital
Secciones del plan de prueba
...
Sección
...
Descripción
...
URL
...
Casos de prueba
...
Los casos de prueba son los escenarios que se utilizan para medir la funcionalidad de la aplicación a través de un conjunto de ciertas acciones o condiciones para verificar los resultados esperados.
...
...
Automatización de pruebas
...
Es el proceso de utilizar herramientas de software que ejecutan software recién desarrollado o actualizaciones a través de una serie de pruebas para identificar posibles errores de codificación, cuellos de botella y otros obstáculos para el rendimiento.
...
...
Pruebas de rendimiento
...
Evalúan el rendimiento de un sistema con una carga de trabajo determinada. Ayudan a medir la fiabilidad, la velocidad, la escalabilidad y la capacidad de respuesta de una aplicación.
...
Ejecución de pruebas
Tipo de prueba
URL
Pruebas Funcionales
Pruebas Automatizadas
Pruebas de Rendimiento
Entregas parciales por sprint
Nuestro proyecto fue planetado realizarse en un tipo de 12 sprints dividios en sprint de 2 semanas cada uno, con el objetivo de entregar valor a través del trabajo comprometido en el equipo.
Es por ello que, en elsiguiente link encontrarán los objetivos comprometidos y los entregables que evidencian nuestras entregas parciales e incrementales: Sprint Review - EntregablesToken Digital
Asimismo, se realizaron 2 revisiones de avances para dar seguimiento estratégico a los principales stakeholders y sponsors del proyecto.
Documentación adicional
Documento | Descripción | URL | Aprobador |
---|---|---|---|
Diagramas de Arquitectura (C4, primeros 2 niveles) | Conjunto de diagramas que describen los componentes del proyecto. | Definición de servicios Token digital Arquitectura Token Digital - SPIN | Miguel C |
Diagramas de secuencia | Esquemas conceptuales que representa el comportamiento del sistema del proyecto. | Flujos Diagramas de mensajes secuencia - Token digital | Miguel C |
Configuración para iniciar microservicio | Serie de valores que permiten administrar la configuración de los microservicios desarrollados.Arquitectura Token digital SPIN . | Miguel C | |
Postman de los servicios | Colecciones de lo que se ha desarrollado para automatizar, configurar pruebas y comprobar el correcto funcionamiento. | Jessy Schuler | |
Documentación de endpoints | En formato Swagger documentar los endpoints desarrollados para el proyecto. | Miguel C + JC del Villar | |
Diccionario de datos - MongoDB | Listado de nombres, definiciones y características de los campos y atributos de la base de datos a utilizar para el proyecto. | ||
Evidencia de ejecución de pruebas | Evidencia del proceso de pruebas ejecutado para el proyecto con los resultados arrojados. | ||
Estructura de ejecución Digital | Miguel C | ||
Plan de pruebas | Plan de pruebas donde se describen el detalle de las pruebas a ejecutarse en el proyecto. | Estrategia de Pruebas - Spin - Token DigitalTAGS de pruebas | Dorian Romero |
Casos de prueba | Identificar en los casos de prueba del proyecto las etiquetas que permitan la ejecución del set de pruebas correspondiente en formato CSV | Dorian Romero | |
Ejecución de pruebas | Evidencia del proceso de pruebas ejecutado para el proyecto con los resultados arrojados. Casos - Scripts de pruebas automatizadas (REST + gRPC), resultados y evidencias | Hugo Flores | |
Diagramas de infraestructura | Diagramas que permitan comprender la infraestructura del proyecto para que se pueda administrar, mejorar y mantener seguro. | Ricardo P + Miguel C | |
Capacidades de microservicios (pods) | Conocer la proyección de consumo de los endpoints del proyecto. | Mario Mendez | |
Métricas para monitoreo de infraestructura (logs para crear dashboards) | Los servicios del proyecto estarán reportando su estado mediante dos vías: reporte de logs y reporte de métricas. | https://fintechdigital.atlassian.net/wiki/spaces/TPP/pages/2485682258/Observabilidad+de+servicios+- Token Digital+Token+Digital#Reporte-de-logs | Mario Mendez |
Métricas para monitoreo de negocio/semántico | Planificar de acuerdo con los objetivos o estrategia de la funcionalidad del negocio. | Mario Mendez |
Estrategia y ejecución de pruebas
Plan de estrategia
Para lograr los resultados esperados y considerar casos positivos y negativos se realizó una estrategia de pruebas para garantizar el uso correcto del framework de QA que se tiene en SPIN, nuestros desarrollos llegarán hasta staging, por lo que garantizar que funcione de acuerdo con lo diseñado, es de suma importancia para este proyecto.
Consulta el detalle del Plan de estrategia: Estrategia de Pruebas - Token Digital
Secciones del plan de prueba
Sección | Descripción | URL |
---|---|---|
Casos de prueba | Los casos de prueba son los escenarios que se utilizan para medir la funcionalidad de la aplicación a través de un conjunto de ciertas acciones o condiciones para verificar los resultados esperados. | |
Automatización de pruebas | Es el proceso de utilizar herramientas de software que ejecutan software recién desarrollado o actualizaciones a través de una serie de pruebas para identificar posibles errores de codificación, cuellos de botella y otros obstáculos para el rendimiento. | |
Pruebas de rendimiento | Evalúan el rendimiento de un sistema con una carga de trabajo determinada. Ayudan a medir la fiabilidad, la velocidad, la escalabilidad y la capacidad de respuesta de una aplicación. |
Ejecución de pruebas
Tipo de prueba | Resultados |
---|---|
Pruebas Automatizadas | |
Pruebas de Rendimiento |
Transferencia de conocimiento (KT)
Con la finalidad de garantizar el éxito de la entrega de los compromisos de este proyecto, compartimos el material que se trabajó en nuestro periodo de transferencia de conocimiento con el propósito de mostrar el resultado de lo trabajado.
Roadmap
...
Para más detalle: Transferencia de conocimiento - Token Digital
Dificultades encontradas
La ejecución de desplegar el código en ambientes previos, la interacción, el flujo de trabajo y la resolución de problemas con Genesys, fueron temas que provocaron atrasos por la falta de conocimiento de sus procesos, la participación repentina e incluso por la falta de acuerdos de equipos. Es importante que cada nuevo involucramiento con una área, un nuevo proceso o equipo de trabajo que pudiera impactarnos, tener una sesión de alineamiento para generar los acuerdos, explicar el objetivo del proyecto, compartir los pedidos y fechas posibles de entrega para coordinar los espacios y se de seguimiento al trabajo colaborativo.
Conclusiones generales
...
El generador del Token Digital, se encuentra disponible para ser consumido de acuerdo con los intereses de la empresa.
Sugerimos explorar otros métodos de cifrado, mecanismos que ayuden a reforzar la seguridad, entre otros para seguir evolucionando de acuerdo con el alcance y nuevas formas de usar este componente.
Jira Legacy | ||||||
---|---|---|---|---|---|---|
|