Keycloak es la autoridad
Las contraseñas, la verificación y la recuperación permanecen en Keycloak. ChainsFlow valida el JWT Bearer de Keycloak sin crear otra identidad.
El subject es el ID
El subject UUID se almacena como users.id y se referencia desde user_portfolios. No hace falta una tabla de sesiones propia.
Los planes siguen siendo locales
ChainsFlow conserva las cuotas Free/Pro y la suscripción Stripe porque son reglas del producto.