Здравствуйте. Весь цикл SSO (перенаправление пользователя на наш сайт → аутентификация → возврат на форум с подписанным payload) кажется настроенным правильно, так как первый пользователь был добавлен корректно (я вижу его в панели администратора с деталями DiscourseConnect Single Sign On). Однако после выхода пользователя из форума и попытки снова войти он видит страницу «Ошибка входа». В логах указано «Completed 422 Unprocessable Entity». Я проверил sso и sig — всё верно. Как или где можно найти причину этой ошибки?
Возможно, стоит создать тестового пользователя и проверить, удастся ли воспроизвести ошибку с этой учётной записью. Попробуйте пройти процесс входа в систему, открыв в браузере панель разработчика на вкладке «Network» (Сеть). Это может предоставить информацию о том, что вызывает ошибку 422.
Если вы ещё не сделали этого, включите настройку verbose discourse connect logging (Подробное логирование Discourse Connect) в Discourse. Эта настройка добавляет дополнительные записи в логи Discourse.
Если вы видите это в логах Discourse, есть ли какие-либо дополнительные сведения о запросе, отображаемые при нажатии на запись лога?
Здесь есть информация об отладке распространённых проблем DiscourseConnect: Debug and fixing common DiscourseConnect issues. Однако я не уверен, что это применимо к вашему случаю.
Привет, Саймон, большое спасибо за совет включить подробное логирование соединений дискурса! В логе я сразу смог найти проблему. Моя ошибка заключалась в том, что я хешировал sso после его URL-кодирования. Чтобы подпись работала, sso должен быть хеширован после base64-кодирования, но до URL-кодирования. Большое спасибо за помощь!