Похоже, это тот же случай, что и несколько лет назад: Discourse doesn't redirect to return_sso_url after user logs in on private site - #8 by vinothkannans
У меня есть приложение на Rails, которое использует omniauth-discourse для входа — это работает отлично.
Затем мой экземпляр Discourse использует SSO для связи с другим приложением, которое я поддерживаю.
Таким образом, Discourse выступает в роли провайдера SSO, но сам также использует SSO с другим приложением.
Когда пользователь уже вошёл в систему в Discourse, перенаправление обратно в исходное приложение работает безупречно.
Однако, если пользователь ещё не авторизован, его направляют в поток SSO, но параметр return_sso_url всегда устанавливается как return_sso_url=https://forum.snap.berkeley.edu/session/sso_login. Разве здесь не должно быть URL исходного запроса?
- Пользователь нажимает кнопку входа в первом приложении, что перенаправляет его на URL, который в итоге выглядит так:
https://forum.snap.berkeley.edu/session/sso_provider?sso=nonce=4...f&return_sso_url=https://www.snapcon.org/accounts/auth/discourse/callback&sig=1...6(я декодировал его для наглядности). - Затем Discourse перенаправляет на конечную точку Discourse второго приложения:
https://snap.berkeley.edu/api/v1/discourse-sso?sig=f...d&sso=nonce=6...1&return_sso_url=https://forum.snap.berkeley.edu/session/sso_login. - Пользователь входит в систему, но его перенаправляют только на главную страницу форума.
Есть ли какое-то обходное решение или это можно исправить в одном из обновлений?
Я понимаю, что использую Discourse просто как прокси, но на данный момент это лучший инструмент для интеграции этих двух приложений.
Спасибо!