What are your experiences with wp-discourse plugin and DiscourseConnect?

Это старый вопрос, но с момента его появления в 2015 году произошло несколько изменений. Одно из заметных изменений заключается в том, что теперь мы используем термин DiscourseConnect вместо Discourse SSO. Это связано с тем, что термин SSO может относиться к нескольким различным механизмам аутентификации (SAML, OAuth2, Auth0 и др.). DiscourseConnect — это реализация SSO в Discourse.

При включении DiscourseConnect вся аутентификация на сайте Discourse будет происходить на сайте, указанном в настройке сайта discourse connect url. Это означает, что пользователи будут создавать свои аккаунты, регистрируясь на вашем внешнем сайте, а не на Discourse. Данные об аккаунте будут передаваться в Discourse при входе пользователей через DiscourseConnect. При первом входе в Discourse данные об аккаунте будут установлены на основе информации, предоставленной в полезной нагрузке SSO. В зависимости от значений некоторых настроек сайта Discourse данные об аккаунте либо будут синхронизироваться каждый раз при входе пользователя в Discourse, либо пользователи смогут устанавливать отдельные значения для своего аккаунта в Discourse. Соответствующие настройки для этого:

  • auth overrides email
  • auth overrides username
  • auth overrides name
  • discourse connect overrides bio
  • discourse connect overrides avatar
  • discourse connect overrides profile background
  • discourse connect overrides location
  • discourse connect overrides website
  • discourse connect overrides card background
  • discourse connect overrides groups

Обратите внимание, что по умолчанию плагин WP Discourse отправляет в полезной нагрузке только следующие поля:

  • username
  • email
  • name
  • bio
  • avatar_url

Дополнительные параметры можно добавить в полезную нагрузку, подключившись к фильтру wpdc_sso_params плагина WP Discourse.

Возможно, самая значительная функциональность, которая теряется при включении DiscourseConnect, заключается в том, что после его включения он становится единственным методом аутентификации для сайта. Это означает, что социальный вход не может быть включен в Discourse одновременно с DiscourseConnect. Однако вы можете включить социальный вход на сайте вашего провайдера аутентификации. Например, вы можете разрешить пользователям входить на ваш сайт через различные провайдеры социального входа, а затем позволять им входить в Discourse через DiscourseConnect. Аналогичный подход можно использовать с OAuth2 или SAML. Пользователи могут входить на ваш сайт с помощью этих методов аутентификации, а затем перенаправляться в Discourse для входа через DiscourseConnect.

Еще одна потерянная функциональность заключается в том, что настройка сайта Discourse invite only не может быть включена одновременно с DiscourseConnect.

Возможность легко синхронизировать данные пользователей из внешнего приложения с Discourse является большим преимуществом. Членство в группах Discourse можно легко установить с помощью полей add_groups и remove_groups, передаваемых в полезной нагрузке SSO. Плагин WP Discourse по умолчанию не передает ни одно из этих полей, но их можно добавить в полезную нагрузку, подключившись к фильтру wpdc_sso_params плагина WP Discourse.

Членство в группах и любые другие поля, которые можно установить в полезной нагрузке, также могут синхронизироваться в фоновом запросе. Подробнее см. Синхронизация данных пользователей DiscourseConnect через маршрут sync_sso. Подробнее о синхронизации групп с помощью плагина WP Discourse см. Управление членством в группах Discourse с помощью WP Discourse SSO.

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

В DiscourseConnect аккаунты связываются на основе external_id, передаваемого с сайта провайдера SSO в Discourse. Плагин WP Discourse использует ID пользователя WordPress в качестве external_id.

Да, по умолчанию все эти поля устанавливаются с помощью реализации DiscourseConnect в плагине WP Discourse. Как упоминалось выше, будут ли они продолжать синхронизироваться при каждом входе пользователя в Discourse, зависит от значений различных настроек сайта Discourse.