После этого мне удалось настроить SSO с использованием JWT.
С библиотекой discourse-omniauth-jwt я не уверен, как перенаправлять пользователей после входа в систему.
Когда пользователь входит на мой сайт, я получаю JWT и сразу же авторизую его в Discourse. В конце этого процесса он оказывается на сайте Discourse, а не возвращается обратно на мой сайт.
Я пробовал изучить методы перенаправления из библиотеки omniauth, которые включают параметр origin и cookie destination_url отсюда. Ни один из них, похоже, не работает.
Возможно, @eviltrout сможет пролить свет на этот вопрос.
РЕДАКТИРОВАНИЕ: Только что осознал, что изучал две разные библиотеки — omniauth и колбэки omniauth в Discourse. В любом случае, всё ещё неясно, как заставить это работать.
В итоге он оказывается авторизованным в Discourse?
Похоже, что такой сценарий не поддерживается. Обычно пользователь находится в Discourse, нажимает «Войти», переходит на ваш сайт для аутентификации и затем возвращается обратно. Если пользователь входит напрямую на ваш сайт, он должен остаться на нём.
Обычно мы поступаем так: Discourse остаётся неавторизованным, но при нажатии кнопки «Войти» происходит перенаправление без необходимости повторно заполнять форму аутентификации.
Итак, встраиваемые элементы действительно используют сессию авторизации (или cookie сессии) для отображения или скрытия частных тем Discourse.
Такой поток авторизации имеет смысл, но для начала я перенаправлю пользователей на форум Discourse для входа в новой вкладке. После обновления страницы они смогут получить доступ к частным темам.