Это старый вопрос, но с момента его появления в 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 emailauth overrides usernameauth overrides namediscourse connect overrides biodiscourse connect overrides avatardiscourse connect overrides profile backgrounddiscourse connect overrides locationdiscourse connect overrides websitediscourse connect overrides card backgrounddiscourse connect overrides groups
Обратите внимание, что по умолчанию плагин WP Discourse отправляет в полезной нагрузке только следующие поля:
usernameemailnamebioavatar_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.