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. но эти кнопки будут работать некорректно без ясного решения.

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

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

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

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

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

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

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