GKONE · GK One Identity
Resumen
GKONE es la plataforma bancaria productiva de un banco jamaiquino. Desde 2021 entrego features en su app mobile, sus web apps, sus microservicios y su identidad, primero via The Bridge Social y después en forma directa con Accentio Studios, cuando el banco decidió retenerme. Mi pieza más grande es GK One Identity (GKID): la capa OAuth 2.1 / OpenID Connect propia del banco, delante de Microsoft Entra External ID. Da a cada app de GK One y a cada partner aprobado una sola cuenta de cliente, single sign-on, consentimiento y permisos revocables. Construí su front web en React, sus pantallas de administración, su servidor de autorización en .NET 10 y sus puertas de entrada en mobile: el login con Entra ID y el launcher de apps de GK ID.
Puntos clave
Login web de GKID224 de los 229 commits del repo; 20 pasos de autenticación, 96 archivos de test unitario con 1.122 casos (Vitest + Testing Library) y 6 specs e2e con Playwright
Construí el login web de GKID en Next.js 15 (App Router) + React 19 + TypeScript, con Zustand, react-hook-form y Zod sobre las APIs de autenticación nativa de Microsoft Entra: sign-in, sign-up, reset de contraseña, OTP por email, consentimiento, selector de cuentas, SSO silencioso y transferencia de sesión desde la app mobile. Lo migré de una SPA en Vite a Next.js.
Tokens fuera del navegadorNingún token en el storage del navegador; una sola imagen Docker promovida de Dev a Prod, con Azure App Configuration cargado al arrancar
Saqué todos los tokens del navegador: 13 route handlers de Next.js funcionan como backend-for-frontend, la sesión vive en una cookie HttpOnly __Host- y los chequeos de mismo origen y Fetch Metadata bloquean las peticiones cross-site.
Portal de cuenta self-service4 páginas de cuenta, desplegadas con Azure Pipelines (Dev, QA, UAT, Prod), Docker y SonarQube
Construí en React el portal de cuenta self-service: el cliente ve las apps que conectó, las revoca, cierra sesiones por navegador o en todas partes y consulta sus dispositivos registrados.
Sección GK Identity del adminEl equipo del banco registra una app de partner nueva desde un solo wizard; escribí las 5.272 líneas de la sección
Construí la sección GK Identity del portal administrativo del banco en Next.js + React + MUI: un wizard que crea la app de Entra y su service principal en 6 etapas y reintenta desde la que falló, generación y revocación de client secrets, scopes, política de consentimiento, single sign-on por app y recursos de API.
Admin del contenido de la appCerca de 6.700 líneas construidas de punta a punta; autor principal del portal, con cerca del 60% de su código
Construí las pantallas del admin que manejan la home de la app mobile: ítems del menú de servicios y promociones por tenant, con copia o movimiento entre tenants y desactivación y borrado masivos.
Servidor de autorización OAuth 2.13 controllers con 56 endpoints (OAuth2, administración de Entra, conflictos de identidad), 108 archivos de test xUnit con 1.346 casos y 155 de los 156 commits del código OAuth
Escribí el servidor de autorización de GK One Identity en .NET 10 (/oauth2/v1): authorization code con PKCE S256, rotación de refresh tokens con detección de reuso, JWKS RS256 con rotación de llaves, discovery, userinfo, introspection, resource indicators (RFC 8707) y logout iniciado por el cliente. Lo endurecí con 8 políticas de rate limit y con refresh y session tokens guardados como hashes SHA-256.
Launcher de GK ID completoUna feature entregada en la app Flutter, el IAM en .NET y el login en Next.js
Construí de punta a punta el launcher de apps de GK ID: la app Flutter emite un código de transferencia de sesión de un solo uso, el IAM lo canjea y el login web abre la app de destino con la sesión iniciada, sin un segundo login.
Migración de B2C a EntraMigración de identidad completa en mobile, web e integraciones de partners
Migré la identidad de clientes de Azure AD B2C a Microsoft Entra External ID en la app Flutter, las web apps del banco y las integraciones de terceros: cada cuenta se mueve en su siguiente inicio de sesión con validación JWKS, y un endpoint batch mueve el resto.
Resolución de conflictos de identidadDetección, unión, pantallas de admin y flujo mobile construidos de punta a punta
Construí la resolución de conflictos de identidad: el sistema detecta clientes duplicados y pasa cada caso por aprobación maker-checker en el portal administrativo. Un orquestador de merge con chequeos previos, un snapshot en Cosmos DB y rollback ejecuta la unión aprobada desde una cola de Azure Service Bus y expulsa las sesiones viejas.
Documentación con Diátaxis26 documentos, 62 de 62 commits
Documenté GK One Identity en 26 documentos organizados con Diátaxis: tutoriales, guías how-to, referencia y explicación.
Login con Entra ID en FlutterMás de 1.600 commits desde 2021; escribí completo el módulo de Entra ID (51 archivos), el 82% de la Home V2 y el 75% de la gestión de cuenta
Construí en la app Flutter el login y el registro con Microsoft Entra ID (activación de biometría, login social detrás de un feature flag, detección de root y jailbreak) y la mayor parte de la Home V2, la gestión de cuenta, la recarga de teléfono y el historial de transacciones, más cambios de API en los microservicios core, remittance y wallet.