На только что настроенном экземпляре Discourse SAML не работает из-за политики Content-Security-Policy по умолчанию, которая блокирует скрипт, отправляющий форму…
Мы размещаем множество клиентов, которые успешно используют плагин SAML с CSP. Можете ли вы сообщить об ошибке, которую вы видите в консоли браузера?
Все наши хостинги используют CDN, поэтому, вероятно, правило CSP не работает для пользователей без CDN ![]()
Да, извините, я планировал это сделать, но не могу воспроизвести сообщение об ошибке — хотя сама ошибка сохраняется.
Теперь я получаю только ошибки «смешанного содержимого» на иконке сайта и иконке Apple. Изображения были загружены до включения настройки force_https, но, как я понимаю, эта настройка должна обеспечивать правильный источник для всех иконок… Это баг?
Я пытаюсь воспроизвести исходную ошибку, которую получил, но пока безрезультатно. Ошибка, отображаемая на экране: «Извините, произошла ошибка при авторизации вашей учётной записи. Пожалуйста, попробуйте снова». Я полагаю, что это недействительный билет, хотя все конфигурации совпадают с существующим рабочим экземпляром как на стороне Discourse, так и на стороне Keycloak. Странно.
Да, извините, я планировал это сделать, но не могу воспроизвести сообщение об ошибке, хотя сама ошибка сохраняется.
Хорошо, я нашёл ошибку. Думаю, она связана с настройкой:
- Это мультисайтовое окружение, где ps.zoethical.org является «основным» сайтом, для которого изначально была настроена SAML.
- На сайте 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 не совместим с режимом нескольких сайтов.
Да, именно это я и осознал только что. Очень жаль. ![]()
Таким образом, несовместимость плагина означает следующее:
- он будет работать на первом сайте мультисайта (или на том, для которого он настроен через
DISCOURSE_HOSTNAME); - кнопка появится в интерфейсе входа на всех остальных инстансах;
- но эти кнопки будут работать некорректно без ясного решения.
Поскольку в категории Customization > Plugin нет отдельной темы для discourse-saml, я предлагаю создать такую тему и упомянуть об этом ограничении в первом сообщении. Я уверен, что можно провести консолидацию информации из более чем 50 тем, упоминающих SAML. Если бы я знал об этом раньше, я бы настроил свои сервисы по-другому.
(Кстати, исходная ошибка CSP, скорее всего, связана с тем, что iframe пытается загрузить оригинальный сайт вместо текущего.)
Скрыть кнопку SAML в мультисайте
Это быстрое решение для тех, кто активировал плагин SAML в мультисайте. ![]()
- Перейдите в Админ-панель > Темы и нажмите «Установить новую».
- Создайте новый компонент (с именем «Hide SAML Button»).
- Добавьте CSS:
#login-buttons .btn.btn-social.saml { display: none; /* плагин несовместим с мультисайтом */ } - Примените компонент ко всем темам.
Теперь кнопка SAML (которая не работает на этом инстансе) останется скрытой.
Эта тема была автоматически закрыта через 3 дня. Новые ответы больше не принимаются.