Ошибка CSRFTokenVerifier::InvalidCSRFToken при запуске входа через SAML в Discourse 2026.6

CSRFTokenVerifier::InvalidCSRFToken при инициации входа через SAML в Discourse 2026.6

Здравствуйте,

Пытаюсь настроить аутентификацию через SAML с использованием ADFS на чистой установке Discourse.

Окружение

  • Версия Discourse: 2026.6 (Rails 8.0.5)
  • Плагин discourse-saml
  • Коммит плагина:
7d0fe944bf33588e6813bffaef5eb8f34e37d039
  • HTTPS включен
  • Обратный прокси-сервер / балансировщик нагрузки перед Discourse
  • force_https = true

Настройка SAML

Эндпоинт метаданных работает корректно:

https://<hostname>/auth/saml/metadata

Метаданные содержат:

  • EntityID
  • ACS URL
  • SLO URL

Команда ADFS успешно импортировала метаданные.

Проблема

При нажатии на Login with SAML Discourse не перенаправляет на ADFS.

Вместо этого сразу возвращается сообщение:

Sorry, the authorization timed out, or you have switched browsers.

Логи Rails

Started GET "/session/csrf"
Completed 200 OK

Started POST "/auth/saml"

(saml) Authentication failure!
CSRFTokenVerifier::InvalidCSRFToken

Started GET "/auth/failure?message=csrf_detected&strategy=saml"

Что уже проверено

  • HTTPS работает
  • Discourse.base_url = https://hostname
  • force_https = true
  • Кука сессии (_forum_session) существует
  • authenticity_token включен в POST /auth/saml
  • Плагин discourse-saml — последняя ветка main
  • Эндпоинт метаданных работает
  • Метаданные ADFS созданы заново на основе метаданных SP

Запрос из браузера

POST /auth/saml содержит:

  • куку _forum_session
  • authenticity_token

Однако запрос сразу завершается с ошибкой:

CSRFTokenVerifier::InvalidCSRFToken

Он никогда не достигает ADFS.

Дополнительная информация

Инструменты разработчика в браузере показывают:

x-csrf-token: undefined

Может ли это быть проблемой CSRF в Rails 8 / OmniAuth, или требуется дополнительная настройка для discourse-saml в последних версиях Discourse?

Буду признателен за любые предложения.


Discourse.base_url

https://testvknowyeni.vakifbank.intra

SiteSetting.force_https

true

SiteSetting.same_site_cookies

Lax