Memberstack + Webflow + Discourse: подключение через OpenID Connect

Привет! Я видел некоторые старые обсуждения по этой теме, но ничего актуального. Я также задавал этот вопрос на форуме Memberstack…

Я работаю над проектом по созданию нового закрытого сообщества и заинтересован в использовании связки Memberstack + Webflow с единым входом (SSO) для платформы Discourse. У меня сложилось впечатление, что это теперь поддерживается через кастомную интеграцию SSO. Мне особенно важно убедиться, что пользователи могут быть аутентифицированы на страницах Webflow, а затем бесшовно переходить на сайт сообщества Discourse. Я видел комментарии, утверждающие, что это возможно, и изучил документацию Memberstack по SSO, но ищу более конкретную информацию, касающуюся интеграции с Discourse. Кто-нибудь использует подобную настройку, где Memberstack управляет SSO для Discourse? Мне нужно как можно скорее протестировать эту схему. Спасибо.

Да, это теперь поддерживается! Memberstack теперь позволяет использовать его в качестве провайдера OpenID Connect: https://docs.memberstack.com/hc/en-us/articles/8161104982043-Custom-SSO-Integrations. Это позволит пользователям входить на ваш сайт Discourse через Memberstack. Если вы настроите свой сайт Discourse так, чтобы OpenID Connect был единственным доступным вариантом входа, вход в Discourse с ваших страниц Webflow будет для пользователей бесшовным процессом. (Примечание: не убирайте возможность входа на сайт Discourse с помощью имени пользователя и пароля, пока не подтвердите, что входы через OpenID Connect работают.)

Для этого вам необходимо установить плагин Discourse OpenID Connect на ваш сайт Discourse. Подробная информация о настройке этого плагина находится здесь: Discourse OpenID Connect (OIDC).

Я рекомендую посмотреть видео в документации Memberstack, на которое я ссылался ранее, прежде чем пытаться настроить входы через OpenID Connect для вашего сайта Discourse. В нём показан процесс настройки входов через OpenID Connect в Memberstack для работы с тестовым сайтом https://openidconnect.net/. После того как вы это сделаете, настройка аутентификации через OpenID Connect для Discourse должна стать простым процессом.

Если есть какие-либо существующие сайты Discourse, которые уже настроили аутентификацию через OpenID Connect с Memberstack, было бы здорово получить от них обратную связь.

@simon Большое спасибо за ваши комментарии и подтверждение того, что это должно работать! Я надеялся получить такую проверку перед тем, как углубляться в работу с Webflow. Я использую это для пилотного проекта и хочу протестировать связку Memberstack + Webflow + Discourse в ходе пилота. Так что это лишь для проверки MVP, и вполне возможно, что в долгосрочной перспективе я перейду на совершенно другое решение (кроме Discourse — его я точно оставлю!).

Поскольку поддержка OpenID в Memberstack появилась сравнительно недавно, я был бы рад узнать, есть ли здесь кто-то, кто уже использует подобную конфигурацию в продакшене.

Привет! Удалось ли вам реализовать рабочее решение для этого? OpenID требует бизнес-аккаунта на Discourse, который стоит 300 долларов в месяц! Я надеялся использовать DiscourseConnect SSO для реализации того, о чём вы упоминали в связке с Webflow и Memberstack!

Насколько мне известно, рабочее решение было реализовано с использованием OpenID Connect.

Полагаю, что Webflow не позволяет добавлять серверный код на ваш сайт. Если это так, то использование DiscourseConnect с Webflow будет невозможным.

@JammyDodger, эту тему можно переименовать в «Memberstack + Webflow + Discourse OpenID Connect».

Всем привет! Мне удалось настроить SSO для Discourse через вход в Memberstack! После входа через OpenID на форум Discourse появляется всплывающее окно с предложением «создать учётную запись» на форуме. Это ожидаемое поведение, или мне должно происходить прямое авторизация? Я прикрепил скриншот всплывающего окна, которое появляется после входа с информацией из Memberstack. Заранее спасибо!

Отлично!

Судя по вашему скриншоту, похоже, что ваш адрес электронной почты не подставляется в форму входа. Прошло уже много времени с тех пор, как я смотрел видео о Memberstack (https://docs.memberstack.com/hc/en-us/articles/8161104982043-Custom-SSO-Integrations), но, кажется, параметр сайта Discourse openid_connect_authorize_scope должен быть установлен в значение openid email profile, чтобы и адрес электронной почты, и имя пользователя включались в полезную нагрузку, отправляемую в Discourse.

Сейчас у меня нет возможности проверить это, но вам возможно потребуется включить следующие настройки, чтобы пропустить всплывающее окно создания учётной записи (иначе поля всё равно должны заполняться, но пользователям придётся нажимать кнопку «Создать учётную запись»):

  • auth skip create confirm (обязательно должно быть включено, чтобы пропустить всплывающее окно создания учётной записи)
  • auth overrides email
  • auth overrides username
  • auth overrides name

Самый простой способ проверить это — если у вас есть учётная запись не администратора на вашем сайте Webflow. Тогда вы сможете несколько раз попробовать войти как этот пользователь и просто удалить его учётную запись на Discourse, если всё работает не так, как ожидалось.

Огромное спасибо, Саймон! Добавление дополнительных параметров в «openid_connect_authorize_scope» исправило проблему, а включение «auth skip create confirm» пропускает всплывающее окно и сразу перенаправляет на главную страницу форума! Я включил «openid connect overrides email» — что это делает?

И есть ли способ настроить кнопку «Зарегистрироваться» в Discourse так, чтобы она перенаправляла на мою собственную страницу регистрации на сайте? Сейчас при нажатии на «Зарегистрироваться» происходит вход через OpenID, но я бы хотел, чтобы она вела на конкретную страницу моего сайта.

Спасибо за всю вашу помощь, она была бесценна!

Верно, для OpenID Connect эта настройка называется openid connect overrides email, а не auth overrides email. Когда она включена, каждый раз, когда пользователь входит в Discourse через OpenID Connect, его email в Discourse устанавливается в значение адреса электронной почты, которое он использует на сайте провайдера аутентификации OpenID Connect. Это означает, что если пользователь изменил свой email в Discourse, он автоматически сбросится до значения адреса электронной почты, который он использует на Memberstack.

Вы можете отключить настройку сайта email editable, чтобы избежать проблем с рассинхронизацией email с провайдером аутентификации. Таким образом, если вы отключите email editable и включите openid connect overrides email, пользователи смогут изменить свой адрес электронной почты только изменив его на Memberstack, а затем войдя в Discourse через Memberstack.

Я не думаю, что это возможно. После нажатия кнопки «Регистрация» в Discourse система перенаправит пользователя на authorization_endpoint, предоставляемый Memberstack. Возможно, Memberstack позволяет настроить это, но для уточнения вам нужно будет связаться с их поддержкой.

Другой возможный подход: можно добавить ссылку на вашу пользовательскую страницу в заголовок Discourse. Например, с помощью этого компонента темы: Custom Header Links. В идеале вы могли бы скрыть эту ссылку от авторизованных пользователей с помощью CSS.

Спасибо, Саймон! Я включил переопределение электронной почты через OpenID и отключил возможность редактирования электронной почты. Благодарю за помощь в этом!

Отличная идея насчёт кнопки регистрации, я изучу возможность её реализации!

@ryanshah112 Мне удалось заставить это работать как POC (при большой помощи от @simon), но я отказался от настройки MS и сейчас приостановил проект на несколько месяцев. Мне нужно снова его запустить. Интеграция MS OpenID мне показалась не очень удачной. Во-первых, есть проблема двойного входа, что делает процесс онбординга неидеальным: система не просто запрашивает авторизацию приложения, но и требует от пользователя войти в систему. Я хотел настроить кастомный процесс онбординга, чтобы пользователь входил на сайте Webflow и мог беспрепятственно перейти в Discourse. Мне удалось реализовать это с помощью форм, Zapier и Airtable, создавая пользователя Discourse через API. Как POC это было довольно круто, но для продакшн-системы такой подход мне не подошел. Когда я снова начну, скорее всего, не буду полагаться на MS как на IDP, а построю решение на базе чего-то вроде Wized с Supabase или подобным. Думаю, связка MS + Discourse будет работать нормально, если вас устраивают некоторые ограничения.

Не могли бы вы подсказать, какой будет URL для подключения к Discourse? Есть конечные точки: Authorization Token, Token и Token Keys.

Привет, River! Если у тебя есть сомнения по поводу OpenID Connect, я рекомендую посмотреть видео от Memberstack об OpenID Connect и пройти обучающее руководство: https://docs.memberstack.com/hc/en-us/articles/8161104982043-Custom-SSO-Integrations. Именно так я и поступил.

Что касается настройки OpenID Connect на стороне Discourse, необходимую информацию можно найти здесь: Discourse OpenID Connect (OIDC). Деталь, специфичная для Memberstack и не упомянутая в той теме, заключается в том, что, как мне кажется, параметр сайта Discourse openid_connect_authorize_scope должен быть установлен в:

  • openid email profile

(Если это верно, эту информацию следует добавить в раздел «Примечания провайдера» в конце темы об OpenID Connect для Discourse.)

Это источник бесконечной путаницы здесь, но DiscourseConnect относится к совершенно отдельному протоколу аутентификации. Информация, которая тебе нужна, находится в теме об OpenID Connect для Discourse, на которую я дал ссылку.

Привет, Саймон,
Спасибо, что прояснил для меня ситуацию. Есть ли способ подключить Memberstack к DiscourseConnect?

Я почти уверен, что использовать DiscourseConnect с Memberstack невозможно. Чтобы это работало, вам нужно было бы иметь возможность добавлять серверный код на ваш сайт Memberstack. Я не думаю, что это можно сделать.

Стоит спросить об этом в Memberstack. Они могли бы реализовать DiscourseConnect для всех своих сайтов так же, как это сделали в Memberful: Integrate Discourse with Memberful - Memberful. Если им понадобится помощь в этом, я готов к консультациям :slight_smile:

Привет, River! Я согласен с Саймоном: использовать DiscourseConnect невозможно, поэтому вам понадобится OpenID. Если вам нужна помощь в настройке интеграции Memberstack и Discourse через OpenID, я с радостью помогу — мне удалось это сделать при поддержке Саймона! Обратите внимание: если вы используете хостинг Discourse, вам потребуется тарифный план «Business».

@ryanshah112 и @river — к сведению: когда я начинал эту тему, у меня было строгое требование использовать Webflow. Memberstack был практически единственным жизнеспособным вариантом для SSO через OpenID, и я не изучал его уже около 6 месяцев, так что, возможно, там что-то улучшилось. Однако, если вы готовы рассмотреть WordPress, у DiscourseConnect есть множество преимуществ.

Райан — я начал с тарифа Business, чтобы протестировать его, но через пару месяцев перешел на самостоятельное размещение (self-hosted), так как для моего POC мне действительно не требовалась упаковка/функции уровня «Business», кроме OpenID. В зависимости от ваших потребностей, возможно, стоит рассмотреть этот вариант. Если вам понадобится помощь в настройке, рекомендую обратиться к @pfaffman. Это очень просто.