Я настроил Discourse на локальной машине и хотел настроить вход через SSO. Я могу перенаправлять пользователя при нажатии на кнопку входа, но после перенаправления возникает постоянная ошибка. Я также включил ведение логов, и там указано: Nonce is incorrect, was generated in a different browser session, or has expired
Ниже представлен файл на Python, который я использую: Discourse-setup/main.py at main · kamleshjoshi8102/Discourse-setup · GitHub
Также обратите внимание, что в моем случае приложение работает на порту 4201, поэтому при входе я перенаправляю на порт 4201.
def nonce_valid?
if SiteSetting.discourse_connect_csrf_protection
nonce && @secure_session[nonce_key].present?
else
nonce && Discourse.cache.read(nonce_key).present?
end
end
Метод проверяет, был ли nonce сгенерирован Discourse для той же сессии, через которую пользователь был перенаправлен обратно в Discourse.
Вы можете попробовать установить параметр сайта discourse_connect_csrf_protection в значение false. По умолчанию его значение — true. Это скрытый параметр сайта, поэтому отключить его можно только через консоль Rails.
При включённом параметре discourse_connect_csrf_protection весь процесс аутентификации SSO выполняется через перенаправления браузера. Если вы запускаете процесс аутентификации, выполняя фоновый запрос к session/sso, вам потребуется отключить этот параметр. Подробнее здесь: DiscourseConnect flow no longer functions - #5 by david.