Discourse-saml не совместим с multisite

На только что настроенном экземпляре Discourse SAML не работает из-за политики Content-Security-Policy по умолчанию, которая блокирует скрипт, отправляющий форму…

Мы размещаем множество клиентов, которые успешно используют плагин SAML с CSP. Можете ли вы сообщить об ошибке, которую вы видите в консоли браузера?

Все наши хостинги используют CDN, поэтому, вероятно, правило CSP не работает для пользователей без CDN :thinking:

1 лайк

Да, извините, я планировал это сделать, но не могу воспроизвести сообщение об ошибке — хотя сама ошибка сохраняется.
Теперь я получаю только ошибки «смешанного содержимого» на иконке сайта и иконке Apple. Изображения были загружены до включения настройки force_https, но, как я понимаю, эта настройка должна обеспечивать правильный источник для всех иконок… Это баг?

Я пытаюсь воспроизвести исходную ошибку, которую получил, но пока безрезультатно. Ошибка, отображаемая на экране: «Извините, произошла ошибка при авторизации вашей учётной записи. Пожалуйста, попробуйте снова». Я полагаю, что это недействительный билет, хотя все конфигурации совпадают с существующим рабочим экземпляром как на стороне Discourse, так и на стороне Keycloak. Странно.

Да, извините, я планировал это сделать, но не могу воспроизвести сообщение об ошибке, хотя сама ошибка сохраняется.

Хорошо, я нашёл ошибку. Думаю, она связана с настройкой:

  1. Это мультисайтовое окружение, где ps.zoethical.org является «основным» сайтом, для которого изначально была настроена SAML.
  2. На сайте forum.zoonklopper.be появляется кнопка SAML, но область действия определена для ps.zoethical.org.
(saml) Authentication failure! invalid_ticket: OneLogin::RubySaml::ValidationError, https://ps.zoethical.org is not a valid audience for this Response - Valid audiences: https://forum.zonnklopper.be

Если я добавлю аудиторию ps.zoethical.org, возникает другая ошибка:

(saml) Authentication failure! invalid_ticket: OneLogin::RubySaml::ValidationError, The response was received at https://forum.zonnklopper.be/auth/saml/callback instead of https://ps.zoethical.org/auth/saml/callback

Плагин SAML не совместим с режимом нескольких сайтов.

1 лайк

Да, я только что это понял. Очень жаль. :frowning:

Таким образом, несовместимость плагина означает следующее:

  1. Он будет работать только на первом сайте мультисайта (или на том, для которого он настроен через DISCOURSE_HOSTNAME).
  2. Кнопка будет отображаться на интерфейсе входа всех остальных инстансов.
  3. Однако эти кнопки не будут работать, и явного решения для этого нет.

Поскольку в канале #plugin нет отдельной темы для discourse-saml, предлагаю создать её и упомянуть этот нюанс в первом посте. Я уверен, что можно обобщить информацию из более чем 50 тем, упоминающих SAML. Если бы я знал об этом раньше, я бы иначе настроил свои сервисы.

(Кстати, исходная ошибка CSP, скорее всего, вызвана тем, что iframe пытается загрузить оригинальный сайт вместо текущего.)

Скрыть кнопку SAML на мультисайте

Это быстрое решение для тех, кто активировал плагин SAML на мультисайте. :slight_smile:

  1. Перейдите в Администрирование > Темы и выберите «Установить новую».
  2. Создайте новый компонент (с именем: «Скрыть кнопку SAML»).
  3. Добавьте CSS:
    #login-buttons .btn.btn-social.saml {
        display: none; /* плагин несовместим с мультисайтом */
    }
    
  4. Примените компонент ко всем темам.

Теперь кнопка SAML (которая не работает на этом инстансе) останется скрытой.

Эта тема была автоматически закрыта через 3 дня. Новые ответы больше не принимаются.