Keycloak — источник идентичности
Пароли, подтверждение и восстановление остаются в Keycloak. ChainsFlow проверяет Bearer JWT Keycloak и не выпускает параллельную идентичность.
Subject — это ID пользователя
Keycloak subject UUID хранится как users.id и используется в user_portfolios. Таблицы identity mapping и сессий приложения не нужны.
Тарифы остаются локальными
ChainsFlow владеет квотами Free/Pro и состоянием подписки Stripe, потому что это правила продукта.