Keycloak — источник идентичности

Пароли, подтверждение и восстановление остаются в Keycloak. ChainsFlow проверяет Bearer JWT Keycloak и не выпускает параллельную идентичность.

Subject — это ID пользователя

Keycloak subject UUID хранится как users.id и используется в user_portfolios. Таблицы identity mapping и сессий приложения не нужны.

Тарифы остаются локальными

ChainsFlow владеет квотами Free/Pro и состоянием подписки Stripe, потому что это правила продукта.