# Провайдер SSO для Discourse не перенаправляет на return\_sso\_url при входе пользователя через кастомный SSO

**URL:** <https://meta.discourse.org/t/discourse-sso-provider-doesnt-redirect-to-return-sso-url-as-user-logs-in-with-custom-sso/188248>\
**Category:** SSO\
**Created:** [27.Апрель.2021 09:30:33 UTC](https://meta.discourse.org/t/discourse-sso-provider-doesnt-redirect-to-return-sso-url-as-user-logs-in-with-custom-sso/188248 "2021-04-27T09:30:33Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![cylau1996](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cylau1996/32/172779_2.png) [@cylau1996](https://meta.discourse.org/u/cylau1996)\
**Post date:** [27.Апрель.2021 09:30:34 UTC](https://meta.discourse.org/t/discourse-sso-provider-doesnt-redirect-to-return-sso-url-as-user-logs-in-with-custom-sso/188248/1 "2021-04-27T09:30:34Z")

</div>

Насколько мне известно, о той же проблеме упоминалось дважды, и утверждалось, что она была исправлена в 2018 году ([Discourse doesn't redirect to return\_sso\_url after user logs in on private site](https://meta.discourse.org/t/discourse-doesnt-redirect-to-return-sso-url-after-user-logs-in-on-private-site/97201)) и в 2015 году ([Login redirect during sso provider login](https://meta.discourse.org/t/login-redirect-during-sso-provider-login/29759)). Однако я всё ещё сталкиваюсь с той же проблемой.

В нашей организации установлен Discourse. У нас есть собственная база данных учётных записей пользователей, поэтому мы используем наш собственный сайт входа через SSO для предоставления пользователям возможности входа в Discourse, следуя инструкциям по адресу [Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)](https://meta.discourse.org/t/discourseconnect-official-single-sign-on-for-discourse-sso/13045). Это работает хорошо.

Кроме того, у нас есть WordPress, Rocket Chat и собственное веб-приложение на Tornado. Они используют Discourse в качестве провайдера SSO.

Для WordPress мы используем плагин wp-discourse. Для Rocket Chat и веб-приложения на Tornado мы следовали инструкциям по адресу [Use Discourse as an identity provider (SSO, DiscourseConnect)](https://meta.discourse.org/t/using-discourse-as-an-identity-provider-sso-discourseconnect/32974).

Процесс входа работал корректно, если пользователь уже был авторизован в Discourse. Однако, если пользователь ещё не входил в Discourse, процесс входа ни в одном из сервисов (например, WordPress, Rocket Chat или веб-приложение на Tornado) не работал должным образом. Когда пользователь пытается войти в WordPress, Rocket Chat или веб-приложение на Tornado, его перенаправляют на [discourse.com/login](http://discourse.com/login). Затем пользователь нажимает кнопку входа, что перенаправляет его на наш собственный сайт SSO. Там он выполняет вход, после чего его перенаправляют на [discourse.com](http://discourse.com), но не на нужный сервис (например, WordPress, Rocket Chat или веб-приложение на Tornado).

Небольшое отступление: функция wp-discourse «Синхронизация выхода из системы с Discourse» не работает. Когда пользователь выходит из WordPress, он остаётся авторизованным в Discourse.

Я сталкиваюсь с этой проблемой уже несколько месяцев после нескольких обновлений Discourse. Теперь я обращаюсь за помощью. Пожалуйста, сообщите, если потребуются дополнительные детали.

Мой текущий обходной путь заключается в том, чтобы перенаправлять пользователя не на /session/sso\_provider, а на /session/sso?return\_path=customurl. Недостаток этого решения заключается в том, что система всегда запрашивает вход у пользователя, даже если он уже авторизован в Discourse.

---

<div class="post-metadata">

**Author:** ![cylau1996](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cylau1996/32/172779_2.png) [@cylau1996](https://meta.discourse.org/u/cylau1996)\
**Post date:** [28.Апрель.2021 03:05:38 UTC](https://meta.discourse.org/t/discourse-sso-provider-doesnt-redirect-to-return-sso-url-as-user-logs-in-with-custom-sso/188248/2 "2021-04-28T03:05:38Z")

</div>

Во время кастомного входа через SSO приложение входа фактически прочитало и извлекло return\_sso\_url из cookie sso\_payload. Этот return\_sso\_url внедрён в payload sso для отправки на /session/sso\_login?. Я мог наблюдать в /logs, что return\_sso\_url был установлен корректно, но перенаправление не произошло. Ниже я привожу лог:

add\_groups:  
admin:  
moderator:  
avatar\_force\_update:  
avatar\_url:  
bio:  
card\_background\_url:  
email: xxx@xxx  
external\_id: 42  
groups:  
locale:  
locale\_force\_update:  
logout:  
name: xxx  
nonce: b4c758723a8abf665b079dc41a585dbc  
profile\_background\_url:  
remove\_groups:  
require\_activation:  
return\_sso\_url: [https://customurl](https://customurl)  
suppress\_welcome\_message:  
title:  
username: xxx  
website:  
location:

---

<div class="post-metadata">

**Author:** ![Devarsh\_Mavani](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/devarsh_mavani/32/251071_2.png) [@Devarsh\_Mavani](https://meta.discourse.org/u/Devarsh_Mavani)\
**Post date:** [03.Июнь.2022 21:25:27 UTC](https://meta.discourse.org/t/discourse-sso-provider-doesnt-redirect-to-return-sso-url-as-user-logs-in-with-custom-sso/188248/3 "2022-06-03T21:25:27Z")

</div>

@cylau1996 ты нашёл какое-нибудь решение?

---

<div class="post-metadata">

**Author:** ![wlandgraf](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/wlandgraf/32/154660_2.png) [@wlandgraf](https://meta.discourse.org/u/wlandgraf)\
**Post date:** [15.Ноябрь.2023 13:52:48 UTC](https://meta.discourse.org/t/discourse-sso-provider-doesnt-redirect-to-return-sso-url-as-user-logs-in-with-custom-sso/188248/4 "2023-11-15T13:52:48Z")

</div>

Есть какое-то решение по этому вопросу?
