Всем привет,
Я использую Discourse 2026.2.0-latest (26f3e2aa87)
(установка через Docker, шаблон nginx по умолчанию, Cloudflare не используется). У меня включен OpenID Connect (Microsoft Entra / Azure AD).
Когда пользователь пытается зарегистрироваться или войти через OIDC, в Discourse фиксируется ошибка:
(oidc) Authentication failure! CSRFTokenVerifier::InvalidCSRFToken
В записи лога я вижу, что запрос:
REQUEST_URI: /auth/oidcREQUEST_METHOD: POST- Referrer:
/signup
Параметр same_site_cookies в данный момент установлен в Lax.
Моя рабочая гипотеза заключается в том, что провайдер идентификации (IdP) возвращает ответ с использованием response_mode=form_post (кросс-сайтовый POST), поэтому при SameSite=Lax кука сессии может не включаться в обратный вызов, что приводит к сбою проверки CSRF в Discourse.
Вопросы:
- Является ли установка
same_site_cookies = Noneрекомендуемым / поддерживаемым решением для OIDC-провайдеров, использующих обратные вызовыform_post? - Если нет, есть ли рекомендуемый способ настроить Discourse OIDC (или IdP), чтобы обратный вызов выполнялся через GET (запрос в строке запроса), а не через
form_post, чтобы избежать необходимости использоватьSameSite=None? - Существуют ли какие-либо предостережения в области безопасности или совместимости, связанные с
SameSite=None, конкретно для регистраций/входов через OIDC в Discourse?
Спасибо!