Проблема с SSO в iframe для форума Discourse

Здравствуйте, я хочу встроить форум на сайт через iframe.

Форум будет авторизовываться через SSO. Встраивание работает корректно. Однако процесс SSO не может установить cookie для входа, так как атрибут ‘samesite lax’ установлен на стороне Discourse. Кто-нибудь тоже сталкивался с этой проблемой? Или кто-нибудь смог встроить свой форум на сайт и подключить его через SSO?

Заранее спасибо

Просто хочу предупредить, что Discourse не работает (или работает очень плохо) внутри iframe. Так что вы уже напрашиваетесь на неприятности :wink:

Спасибо за очень быстрый ответ :slight_smile:

image

Хм, хорошо, я нашёл настройку в разделе параметров Discourse. Она позволяет встраивать форум в другой сайт через iframe. Эта настройка работает (если вы уже вошли в систему и у вас есть cookie).

Единственное, что не работает, — это процесс SSO. Наш процесс SSO работает корректно при открытии форума в новой вкладке. Однако iframe нарушает этот процесс, поскольку cookie с токеном доступа не может быть установлен из-за другого домена. Это приводит к бесконечному циклу внутри iframe, так как Discourse не может найти этот cookie и снова запускает процесс SSO.

Поскольку это очень важно для нас, неужели нет возможности встроить форум через iframe, используя аутентификацию SSO?

Эта настройка довольно экспериментальная и не поддерживается в среде SSO. Для возврата перенаправления потребуется выполнить сложные действия, чтобы передать всю информацию обратно во фрейм.

Настоятельно рекомендую использовать пользовательские заголовок и подвал — это очень просто настроить, чтобы они выглядели как на основном сайте.

Спасибо за ваш ответ.

Мы попробуем использовать пользовательский заголовок и подвал.
Есть ли в ближайшем будущем планы по поддержке работы discourseSSO внутри iframe? Эта функция была бы полезна, когда люди хотят встроить форум на свой сайт без реализации всех API от Discourse.

Какое отношение iframe имеет к API?

Уважаемый Стефан,

Мы уже используем форум с SSO внутри веб-представления в приложении. Мы хотим интегрировать форум в новый веб-сайт, который мы разрабатываем. Полагаю, у нас есть два варианта:

Вариант 1: реализовать несколько API (например, для получения сообщений, категорий и публикации в Discourse).

Вариант 2: встроить форум в наш сайт через iframe в сочетании с SSO. (Это экономически эффективно, и мы сможем оценить успех форума до начала значительных инвестиций.)

Таким образом, отвечая на ваш вопрос: вариант с iframe не имеет никакого отношения к API.

Есть ли в ближайшем будущем планы сделать работу Discourse SSO возможной в iframe?

Протокол SSO перенаправляет на ваш сайт, где вы выполняете аутентификацию, а затем перенаправляете обратно на наш сайт.

Если настроить IFRAME, то перенаправление, которое вы выполняете после аутентификации пользователя, должно вести на ваш сайт, после чего потребуется某种 магия, чтобы передать информацию обратно во фрейм.

Это технически сложно и очень трудно реализовать правильно. С другой стороны, вариант с пользовательским нижним и верхним колонтитулом технически гораздо проще в реализации, менее подвержен ошибкам и, как дополнительный бонус, быстрее, поскольку вам не нужно делать два отдельных запроса для построения страницы.