• postmortem

Анализ инцидента: сбои аутентификации из-за кэширования JWKS и ротации ключа подписи

Анализ инцидента аутентификации от 8 января 2026 года (PST).

Gao
Gao
Founder

Хватит тратить недели на аутентификацию пользователей
Запускайте безопасные приложения быстрее с Logto. Интегрируйте аутентификацию пользователей за считанные минуты и сосредоточьтесь на вашем основном продукте.
Начать
Product screenshot

Дата: 8 января 2026 года (PST)

Длительность: ~60 минут

Влияние: некоторые производственные арендаторы столкнулись со сбоями при входе и проверке токенов; доступ к Console также мог быть нарушен

Итоги

Несоответствие между ротированным ключом подписи и кэшированным JWKS на нашем домене *.logto.io привело к сбоям валидации токенов. Мы сбросили кэш JWKS и вернули предыдущий ключ подписи для восстановления работы сервиса.

У некоторых пользователей могут всё ещё наблюдаться проблемы с входом в Console из-за кэша браузера. Приносим извинения за причинённые неудобства.

Хронология (PST)

  • 16:00 инцидент начался (обнаружено увеличение ошибок валидации токенов/аутентификации)
  • 16:35 определена причина (JWKS был закэширован после ротации ключа подписи)
  • 16:41 кэш очищен
  • 16:49 ключ подписи возвращён к предыдущему
  • 17:00 сервис восстановлен; продолжается мониторинг

Подробности инцидента

Влияние

В течение инцидента некоторые пользователи не могли войти в систему, а часть токенов не проходила валидацию. Это затронуло несколько производственных арендаторов и могло блокировать доступ к Logto Console.

Мы не обнаружили никаких признаков несанкционированного доступа, связанных с этим инцидентом; ущерб ограничился только сбоями аутентификации.

Действия для клиентов

Если у тебя всё ещё не получается войти в Logto Console, попробуй:

  • открыть сайт в режиме инкогнито/приватном окне, или
  • очистить/отключить кэш браузера и повторить попытку

Что произошло

  1. Мы обновили настройки кэширования JWKS для доменов арендаторов клиентов (*.logto.app). По ошибке кэширование JWKS всё ещё оставалось включённым для нашего облачного домена (*.logto.io).
  2. Мы провели ротацию ключа подписи для нашего облачного сервиса. Так как ответы JWKS для *.logto.io были закэшированы, некоторые клиенты продолжили использовать устаревший JWKS и не могли валидировать новые токены.
  3. Мы сбросили кэш JWKS для *.logto.io, вернули предыдущий ключ подписи, затем снова очистили кэш JWKS, чтобы удостовериться, что клиенты получили обновлённый ключ.
  4. Аутентификация восстановилась. У некоторых пользователей проблемы со входом в Console могут сохраняться из-за кэша браузера.

Полученные уроки

Ротация ключей — это не только задача управления ключами, но и комплексное изменение совместимости, которое должно учитывать поведение кэширования между эмитентами и валидаторами. Несогласованность конфигураций между доменами (*.logto.app и *.logto.io) представляет реальный риск. Изменения, безопасные для одного домена, могут привести к сбоям на другом, если применяются неравномерно.

Наши существующие интеграционные тесты не покрывали кэширование JWKS в условиях, приближённых к продакшену, поэтому данный сценарий сбоя не был отработан до ротации ключа.

Предотвращающие меры

Мы внедряем:

  • принудительную инвалидцию кэша JWKS как обязательный этап при ротации ключа подписи (ротация только после завершения инвалидции)
  • отключение кэширования JWKS до появления рабочей схемы инвалидции, затем повторное включение кэширования для повышения производительности
  • интеграционные тесты, приближённые к продакшену, для ротации ключей, включая проверку поведения кэширования JWKS и контроля его очистки