Alcampo - Brand Portal

Arquitectura de Referencia

SSO, Token Handler Pattern, Backend For Frontend y topologias de despliegue agnosticas.

Quarkus 3 React SPA Java 21 Salesforce IdP OAuth2
01 Contexto

El Problema

Un portal web para proveedores de Alcampo que necesita autenticar usuarios contra Salesforce (IdP corporativo) sin exponer tokens OAuth2 al navegador.

Tokens Sensibles

Los JWT de Salesforce contienen privilegios de acceso a datos comerciales. Exponerlos al JavaScript del navegador es un vector de ataque XSS critico.

Multi-Entorno

La solucion debe funcionar en GCP, Kubernetes on-premise o servidores legacy sin modificar una sola linea de codigo de negocio.

Rendimiento

El proxy de tokens debe resolverse en milisegundos. Un monolito Spring Boot con Cold Start de 8s no es viable en Serverless.

02 Patron

Token Handler Pattern

La solucion aplica el Token Handler Pattern mediante un Backend For Frontend (BFF) que actua como mediador central.

  • La SPA nunca recibe tokens -- opera exclusivamente con una cookie HttpOnly opaca.
  • El BFF custodia los tokens cifrados en un Session Store seguro (Redis, Firestore o RDBMS).
  • Cada peticion API pasa por el BFF, que inyecta el Bearer token server-to-server.
  • Cookie configurada con Secure, SameSite=Lax y expiracion controlada por TTL.

Flujo Simplificado

1. Browser → /bff/login
2. BFF → 302 → Salesforce /authorize
3. User autentica en Salesforce
4. Callback → BFF recibe code
5. BFF intercambia code → Token Bundle
6. Tokens cifrados → Session Store
7. BFF → Set-Cookie: session_id → SPA
03 Secuencia

SSO Handshake -- Authorization Code Grant

El navegador sin sesion activa dispara automaticamente el flujo OAuth2 contra Salesforce.

SSO Handshake Sequence Diagram Clic para ampliar
04 Secuencia

Resolucion de Peticiones -- Token Exchange

Cada llamada API del SPA se traduce a una peticion autenticada server-to-server.

BFF Token Handling Sequence Diagram Clic para ampliar
05 Stack Tecnologico

Quarkus + React

Backend -- Quarkus 3 (Java 21)

  • Arranque <50ms en modo nativo (GraalVM). Cold Start eliminado.
  • Huella <100 MB RAM -- 10x menor que Spring Boot.
  • JAX-RS nativo para el 95% del trafico proxy.
  • Apache Camel reservado para agregaciones complejas (5%).
  • Session Store abstraido: Firestore en GCP, PostgreSQL on-premise.
Quarkus 3.x JAX-RS GraalVM Camel (EIPs)

Frontend -- React SPA

  • Compilacion estatica pura: HTML, CSS, JS minificado.
  • El servidor host solo sirve index.html -- sin NodeJS ni JDK.
  • withCredentials: true en cada fetch() hacia el BFF.
  • CORS estricto: Access-Control-Allow-Origin exacto (nunca *).
  • Desplegable en CDN, Nginx on-premise o un simple bucket.
React TypeScript Vite Client-Side
06 Arquitectura

Flujo Interno del BFF

El 95% del trafico es proxy directo. Apache Camel interviene solo en agregaciones multi-API.

BFF Internal Flow Diagram Clic para ampliar
07 Despliegue

Nucleo Agnostico

El mismo codigo fuente se materializa en 4 topologias distintas. Cambiar de Serverless a Bare Metal no es un proyecto de desarrollo -- es una mutacion de CI/CD.

1 - PaaS

Google Cloud Run

Serverless 100% gestionado. Cloud Armor WAF, VPC Service Controls, Cloud NAT con IP estable y autorizada en la whitelist de Salesforce.

2 - CaaS

GKE + Cloud SQL

Kubernetes gestionado con Workload Identity, Network Policies deny-by-default y persistencia delegada a Managed Postgres.

3 - Private Cloud

Kubernetes On-Premise

Orquestacion en CPD propio. Forward Proxy interno como pasarela egress con IP publica autorizada.

4 - Legacy

Bare Metal / Tiers

Segregacion clasica Web Tier + App Tier + DB Tier. Quarkus Fat JAR desplegado en servidores de aplicaciones existentes.

08 Topologia 1 - PaaS -- Google Cloud Run

Serverless con VPC Service Controls

Topology 1 PaaS Cloud Run Clic para ampliar
09 Topologia 2 - CaaS -- GKE + Cloud SQL

Kubernetes Gestionado con Persistencia Hibrida

Topology 2 CaaS GKE Clic para ampliar
10 Topologia 3 - Private Cloud -- Kubernetes On-Premise

Contenedores en CPD Propio

Topology 3 Private Cloud K8s Clic para ampliar
11 Topologia 4 - Legacy -- Bare Metal / Tiers

Infraestructura Heredada

Topology 4 Legacy Bare Metal Clic para ampliar
Fin

Un codigo.
Cuatro topologias.

La logica de cifrado de tokens permanece identica en cualquier perimetro. Cambiar de topologia es una mutacion de CI/CD, no un proyecto de desarrollo.

Quarkus 3 React SPA Token Handler BFF Cloud Agnostic
100%