Плагин OIDC внезапно перестал работать: для новых пользователей происходит тихий сбой

У нас запущен экземпляр Discourse, который перестал регистрировать пользователей, у которых ещё нет аккаунта, и мы не можем понять, почему! Это началось пару недель назад после установки плагина Discourse AI и перезапуска экземпляра. Мне об этом стало известно только после жалоб клиентов за последние пару дней. Обычно у нас ежедневно много новых регистраций.

Настройка

  • Самообслуживаемый Discourse через официальный Docker
  • https://community.enginedj.com
  • Плагин OIDC с использованием нашего собственного провайдера OIDC (:camera_flash: 1)
  • Никакой другой аутентификации, кроме OIDC (т. е. нет регистрации по email и паролю) (:camera_flash: 2)
  • Последняя успешная новая регистрация была 22 ноября 2023 года в 05:23 по времени NZDT
  • Плагин AI был установлен примерно 22 ноября 2023 года в 06:03 по времени NZDT (это привело к перезагрузке экземпляра Discourse)
  • В логах нет событий изменений конфигурации системы с октября, и ничего, связанного с аутентификацией, с марта (:camera_flash: 3)
  • Активность на форуме высокая, проблем с местом на диске, базой данных и т. д. нет.

Проблема

  • Процесс входа работает корректно, но возвращающиеся пользователи без существующего аккаунта не авторизуются
  • Сообщение об ошибке не отображается
  • В логах нет сообщений об ошибках (в логах есть некоторые ошибки CSRF, но они не связаны с неудачными попытками входа)
  • Подробное логирование плагина OIDC показывает, что он корректно запрашивает данные у провайдера OIDC, получает утверждения и т. д., и проблем не выявляет (:camera_flash: 4)

Что мы уже пробовали

  • Отключили плагин Discourse AI
  • Удалили плагин Discourse AI
  • Проверили ответы куки на несоответствие доменов
  • Обновили все плагины и компоненты до последних версий (:camera_flash: 5)
  • Подтвердили, что настройки не изменялись
  • Изучили логи на хосте. Ничего подозрительного не обнаружено.

Вот видео с демонстрацией проблемы. Первый вход — для пользователя без существующего аккаунта Discourse. Второй — с моим аккаунтом администратора.

https://www.loom.com/share/3aad210d844849dc8154ce6e5db50d29

Есть ли идеи, на что нам стоит обратить внимание дальше?

:camera_flash: 1

:camera_flash: 2

:camera_flash: 3

:camera_flash: 4

:camera_flash: 5

Привет, @snikch :wave:

Когда я прохожу процесс входа на вашем сайте, в консоли JavaScript я вижу эту ошибку. Она исходит из темы с id=12, которая, похоже, пытается (и не может) добавить какой-то дополнительный стиль для кнопки входа?

Если я использую инструменты разработчика браузера, чтобы «заблокировать» JavaScript для этой конкретной темы, то всё, кажется, работает как ожидалось.

Так что, чтобы снова всё заработало, вы можете либо отключить тему с id=12, либо отредактировать её, чтобы исправить/удалить проблемный код.

Тем не менее, нам совсем не хочется, чтобы такая ошибка в теме полностью ломала вход на сайтах! Поэтому я изучу, можно ли улучшить обработку ошибок здесь :eyes: (правка: PR для улучшения здесь)

Вау, спасибо, @david. Я видел эту ошибку и создал задачу для её исправления, но просто предположил, что это никак не связано с входом пользователя, так как считал, что это всё происходит на стороне сервера и до того, как JS отрендерит страницу! Столько допущений :facepalm: Теперь я вижу, что это нужно для отображения модального окна «Создать аккаунт».

Огромное спасибо за помощь :heart_eyes_cat: