Не могу войти в последнюю версию с LDAP

Привет, ребята,

Извините за беспокойство по этому вопросу. Недавно мы обновили нашу установку Discourse до последней версии. Мы используем плагин LDAP (GitHub - jonmbake/discourse-ldap-auth: Discourse plugin to enable LDAP/Active Directory authentication. · GitHub), однако пользователи не могут войти в систему.

Если у вас сохранилась сессия, вы не столкнетесь с какими-либо проблемами. Однако, если вы попытаетесь войти сейчас, при нажатии на кнопку «Войти» URL изменится на: /auth/failure?message=csrf_detected, и мы получим сообщение об ошибке: «Время ожидания авторизации истекло, или вы сменили браузер. Пожалуйста, попробуйте снова.»

Знает ли кто-нибудь, могло ли недавнее изменение привести к такой ситуации?

Спасибо.

Полагаю, у @david, возможно, есть совет?

Кстати, есть ли способ откатиться к предыдущей версии? Я искал информацию, и общий совет — отключить плагины (или конкретный проблемный плагин). Однако я не могу отключить этот, так как именно через него пользователи входят в платформу :stuck_out_tongue:

Это не совсем поддерживается, но если у вас есть резервная копия, вы можете удалить директорию с данными PostgreSQL, добавить коммит в строку версии в app.yml, пересобрать и восстановить резервную копию.

Да, я сделал резервную копию и сейчас пытаюсь восстановить систему, используя SHA-хэш версии, которая у меня была, так как она работает нестабильно.

Параллельно у меня осталась последняя стабильная версия, и я пытаюсь понять, можно ли как-то исправить ситуацию.

Не знаю, есть ли у @david какие-либо советы, как предложил @codinghorror, но я готов попробовать что угодно, так как мои пользователи не могут войти в систему (если только они не сохранили свою сессию).

Краткое обновление: Попробовал использовать резервную версию с моментальной снимком машины на тот момент (до обновления). Нажатие кнопки «Войти» просто перезагружает главную страницу дважды. Попробовал пересобрать с тем же SHA коммита, что был у меня тогда, но не повезло — ошибка Rake для базы данных. :no_mouth:

Искал другие сообщения о проблеме с LDAP, вроде бы их нет. Не может ли это быть вызвано внешним источником?

Последнее обновление:

Проблема решена, найдена первопричина — она не связана с Discourse (извините, ребята!). Проблема заключалась в том, что сертификат был обновлён и раздается через HAP. Ранее мы не использовали HAP, и Discourse раздавал сертификат самостоятельно. Мы упустили этот нюанс, что и привело к ошибке CORS.

Извлечённые уроки:

  • Откат Discourse не является вариантом — лучше иметь резервную копию всей машины (к счастью, у нас она была).
  • Мне ещё предстоит понять, почему так сложно выполнить пересборку с конкретным SHA, следуя инструкциям, которые я прочитал здесь — у меня не получилось.
  • Сертификаты всегда лучше раздавать через HAP, но не забывайте об этом. (Для сведения: необходимо добавить флаг 'set-header X-Forwarded-Proto https', так как у Discourse есть собственный NGINX, и именно здесь происходила ошибка).
  • Тот факт, что никто не сообщал о той же проблеме (даже учитывая, что это крайний случай, поскольку плагин не является официальным), указывал в этом направлении (сообщество работает как задумано :P).
  • Проблема проявилась лишь спустя время (до такой степени, что мы уже не помнили об изменении сертификата) из-за пересборки, запущенной обновлением, на которой и произошла ошибка.

Ещё раз спасибо и извините за шум!