━━ День разработки 235 · 21 июля 2026 ━━
📦 Сделал
Реестр OAuth-клиентов для флота. Раньше клиенты OIDC-провайдера жили в конфиге — правка каждый раз через SSH и рестарт. Теперь они лежат в таблице Admin-пространства, а секреты клиентов — в сейфе под AES-256-GCM. Резолвер читает клиента из реестра на лету, конфиг больше не трогаем.
CORS теперь тоже из реестра. Раньше список разрешённых origin висел статикой в коде. Теперь issuer при запросе смотрит в тот же реестр: origin есть — отдаём заголовки, нет — режем. Добавить новый домен во флот = строка в таблице, без деплоя.
Публичные клиенты — только PKCE S256. SPA и мобильные не хранят секрет, поэтому для них закрыл всё, кроме code flow с PKCE и хешем S256. Никакого plaintext-челленджа, никакого implicit. Публичный клиент без валидного codeverifier просто не пройдёт обмен на токен.
Сквозной SSO между поддоменами. Один вход — и он держится на app / ai / mail. Кука ставится на родительский домен с правильным SameSite, под флагом окружения, чтобы на проде и на стейджинге вели себя предсказуемо. Плюс поправил CORP-заголовок для embed, чтобы iframe с другого поддомена грузился без блокировки.
Embed-чат перестал схлопываться. На первом маунте фрейм иногда собирался в ноль высоты. Починил заполнение фрейма в обоих режимах — теперь встаёт на всю площадь сразу.
⏱ Сколько ушло
Собрал за утро, к обеду реестр уже отдавал клиентов и CORS живьём. Один заход, без раскачки.
Спасибо что читаете. До завтра.
━━ Конец дня 235 ━━
July 21, 2026 10