Discourse с SSO из Nextcloud

Не удалось найти руководство по этому вопросу. Однако я хотел бы «интегрировать» Discourse как «приложение» внутри открытой среды совместной работы Nextcloud. Я полагаю, что это делается путём открытия Discourse — своего рода через iframe — как «внешнего сайта» в Nextcloud. Вот мои шаги:

  1. Обратите внимание, что существует своего рода «приложение для интеграции» для использования единого входа (SSO) между Nextcloud и Discourse:
    Discourse SSO - Apps - App Store - Nextcloud

  2. В Nextcloud перейдите в раздел + Приложения → Интеграция → Discourse SSO. Установите его и включите.

  3. Перейдите в свои настройки и введите информацию о SSO:

  4. Перейдите на сайт форума Discourse (к сожалению, он на шведском языке) и откройте настройки администратора:


    Прокрутите вниз и заполните эти три поля:

  5. Я выхожу из системы как в Discourse, так и в Nextcloud. Затем вхожу в Nextcloud (используя тот же адрес электронной почты и в Nextcloud, и в Discourse), но не могу успешно открыть «внешний сайт», чтобы отобразить свой форум Discourse.

Почему Firefox интерпретирует мой форум как встроенный?

Вы уверены, что используете правильную конечную точку для SSO?

Второй шаг — проверить, не вызывает ли CSP такое поведение (я не уверен, как и почему).

Я пробовал отключить SSO, но поддомен, на котором расположен мой форум, по-прежнему не открывается в Nextcloud. Однако мой обычный домен открывается.
Вы имеете в виду под CSP облачного провайдера, где размещён мой Discourse?

От Nextcloud

Ваши ссылки могут работать корректно, а могут и нет — это зависит от того, как веб-браузеры и веб-сайты обрабатывают HTTP и HTTPS URL-адреса, а также от того, что приложение «Внешние сайты» встраивает внешние ссылки в IFrames.

Discourse не работает внутри тега <iframe>, и ваш сервер Discourse отклонит подключение.

Спасибо! Но тогда почему существует приложение «Интеграция SSO», если интеграция невозможна? Есть ли какое-то обходное решение, позволяющее встроить Discourse в iframe?

Редактирование: Я создал пост на форуме Nextcloud. Сообщу, если получу там какие-либо разъяснения.

Хорошо, так что один пользователь на форуме Nextcloud просто подтверждает, что проблема, похоже, в Discourse, так как он не работает в iframe. Быстрый поиск в Google привёл меня к этому проекту на Github, которому уже 4 года:

После того как я отредактировал app.yml для работы с этим плагином, что делать дальше? Нужно ли пересобрать Discourse, чтобы полностью установить его?

Да, для установки любого плагина потребуется пересборка.

На всякий случай: плагин, который не обновлялся более 4 лет, с большой вероятностью может перестать работать.

Вы можете отправлять сообщения об ошибках и запросы на новые функции на GitHub проекта. Обратите внимание, что он еще не обновлен для версии 20. Нажмите для получения подробностей.

Спасибо за совет! Вы сами этим приложением не пользовались, да?

Для справки: я установил плагин “allowifram”, и мой Discourse действительно упал. :stuck_out_tongue:

Для всех, кто заинтересован, я спросил у разработчика, предпринимались ли попытки интегрировать Discourse в Nextcloud: Amend so that Discourse can be opened within Nextcloud? · Issue #18 · habi-dat/discoursesso · GitHub
Разработчик ответил, что нет, но что он/она обошёл(ла) проблему с iframe с помощью следующего плагина: GitHub - soudis/discourse-allow-same-origin · GitHub
Сам я его ещё не пробовал(а).

Извините за поздний ответ. Недавно я изучал варианты интеграции Nextcloud и Discourse. Вы, вероятно, уже во всём разобрались, но мне было бы интересно сравнить наши находки. Вы всё ещё используете Discourse и Nextcloud вместе? Если да, поделитесь, пожалуйста, дополнительной информацией: что именно вы пытаетесь реализовать и как это работает на практике? Буду очень признателен!

Да, как вы уже выяснили, Discourse не любит запускаться внутри iframe. Это было так всегда. Обходной путь — использовать собственную гибкую систему темизации Discourse, чтобы добавить заголовок, соответствующий вашему основному сайту. Затем вы можете использовать систему темизации Nextcloud, чтобы при необходимости обновить его для соответствия. В настройках администратора Nextcloud для внешних сайтов выберите опцию redirect; это означает, что сайт не позволяет встраивание. Ссылка на Discourse будет открываться в той же вкладке браузера, без iframe.

Screen Shot 2021-05-05 at 3.58.30 PM

Приложение Nextcloud discoursesso, о котором вы упоминаете, предназначено для аутентификации пользователей вашего сайта Discourse через Nextcloud. Похоже, вы настраиваете его правильно. Вам просто нужно перейти по URL-адресу вашего сайта Discourse и попытаться войти в систему — вы увидите, что вход выполнен с использованием учётных данных Nextcloud.

Обратите внимание: в Discourse функция Discourse SSO была переименована в Discourse Connect. Включение этой функции полностью заменит все другие варианты входа на вашем сайте Discourse, поэтому используйте её с осторожностью.

Удалось ли что-то добиться с этим плагином? :eyes:

Я установил плагин, но всё равно получаю ошибку «Не удалось получить уведомления Discourse».