🔐 — ¿qué harían ustedes?
Estamos construyendo una plataforma B2B SaaS donde cada cliente (institución) debe ver solo sus propios datos. Arquitectura: FastAPI (Python) + Supabase (PostgreSQL) con RLS activado.
El problema: Implementamos nuestro propio sistema de autenticación JWT con python-jose — tokens firmados que incluyen datos del usuario y el cliente_id. El aislamiento multi-tenant lo garantizamos a nivel de código en cada endpoint de FastAPI, filtrando siempre por el cliente_id del JWT.
El problema: Supabase RLS no puede leer nuestro JWT personalizado — solo entiende el JWT de Supabase Auth. Entonces nuestras políticas RLS actuales son permisivas (using (true)), y el aislamiento real depende del código Python, no de la base de datos.
Las dos opciones:
Opción A — Migrar a Supabase Auth RLS filtraría por auth.uid() garantizando aislamiento a nivel de base de datos. Más robusto, pero implica reescribir el módulo de autenticación completo.
Opción B — Mantener JWT propio + aislamiento en endpoints Seguir con el JWT personalizado y asegurarnos de que cada endpoint filtre correctamente. Funciona bien para el MVP, pero el aislamiento depende de que no haya bugs en el código.
Contexto:
MVP en etapa temprana, pocos clientes por ahora
El JWT propio nos da ventajas en lógica de negocio personalizada
Presupuesto y tiempo limitados
¿Qué harían ustedes? ¿Opción A, Opción B, o hay una Opción C que no estamos viendo?