Возможно ли «частичное» SSO?

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

В начале пробного периода я был уверен, что после его окончания выберу SSO, но теперь не так уверен. Кажется, что при включении SSO я потеряю некоторые удобные функции Discourse (например, функцию приглашений), и я не знаю, стоит ли это того в моём случае.

Возможно ли настроить форум так, чтобы он использовал как встроенные учётные записи Discourse, так и учётные записи моего сайта? Похоже на то, как можно настроить варианты «или войдите через Facebook/Google/Apple»?

Вы знаете, что когда пользователь пытается войти или создать учётную запись, ему предлагаются поля для ввода email и пароля, а справа — варианты входа через Facebook, Google и т. д.? Могу ли я просто добавить учётную запись моего сайта как один из этих вариантов справа?

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

Возможно ли это? И целесообразно ли это? То есть, есть ли причины, по которым мне не стоит идти этим путём? Спасибо!

Это зависит от того, что вы имеете в виду под «SSO»:

  • Если вы говорите о Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso), то его нельзя использовать одновременно с другими вариантами входа.

  • Если вы имеете в виду OAuth2, OpenID Connect или любые другие плагины аутентификации, то да, их можно использовать вместе друг с другом, а также с входом по email и паролю.

Хорошие новости по этому поводу — мы недавно добавили поддержку приглашений для DiscourseConnect.

А для других методов входа:

Эти изменения уже доступны в последней версии Discourse.

Вы можете сделать это, реализовав OAuth2 на своем сервере, чтобы он мог функционировать как Google, GitHub и другие. (Или поручить это кому-то другому, поскольку вы не разработчик.)

Спасибо! Не могли бы вы дать ссылку на соответствующую документацию?

Эти два плагина можно найти по ссылкам:

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

Мой основной сайт работает на WordPress, и я использую плагин WP Discourse для интеграции этих двух приложений. У меня также есть форма регистрации, которая выполняет проверку электронной почты в WordPress, и я написал собственный код, чтобы предотвратить отправку Discourse дублирующихся писем с подтверждением пользователям при регистрации. Я включил настройку must_approve_users в Discourse, чтобы никто не мог получить доступ к сообществу без утверждения.

Я следовал следующим шагам, но в итоге пользователь так и не был утвержден. Как и раньше.

  1. Отправить приглашение пользователю по адресу электронной почты.
  2. Пользователь открывает письмо с приглашением и нажимает на ссылку.
  3. Пользователь перенаправляется на страницу Discourse в состоянии выхода из системы с приветственным сообщением и кнопкой призыва к действию (CTA) для продолжения.
  4. Нажатие на кнопку CTA переводит пользователя на страницу входа в WordPress.
  5. Так как пользователь еще не зарегистрирован в WordPress, мне пришлось создать для него новую учетную запись — что, как мне кажется, логично, поскольку WordPress не знает, что пользователь был приглашен через Discourse.
  6. После регистрации я получаю письмо с подтверждением от WordPress. Я перехожу по ссылке в этом письме и попадаю на страницу входа в WordPress.
  7. После входа в WordPress я пытаюсь перейти в сообщество, но не могу.
  8. Я захожу в административную панель и проверяю статус пользователя и, как я и предполагал, он имеет статус «Требует утверждения». Это точно такая же ситуация, как и до отправки приглашения.

Что я упускаю? Нужно ли мне следовать другому сценарию? Могу ли я приглашать только тех пользователей, которые уже зарегистрированы в WordPress? Буду признателен за любые рекомендации. Спасибо.

Моя версия Discourse: 2.8.0.beta1