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

I’m considering the WP-Discourse plugin to integrate my WP site with Discourse, but would be interested in understanding a bit better what the benefits and costs are. What do you lose exactly when you turn on SSO in terms of discourse functionality, and what do you gain? How are the WP and Discourse accounts linked? For example, can the user profile info like picture, username, email address, “about me” and location be shared across both platforms?

Thanks for any guidance. I’d love to be directed also any good examples of the wp-discourse plugin in action, with and without SSO.

Esta é uma pergunta antiga, mas houve algumas mudanças desde que foi feita em 2015. Uma mudança notável é que agora estamos usando o termo DiscourseConnect em vez de Discourse SSO. Isso ocorre porque o termo SSO pode ser usado para se referir a alguns mecanismos de autenticação diferentes (SAML, OAuth2, Auth0…). O DiscourseConnect é a implementação do Discourse de SSO.

Quando o DiscourseConnect está habilitado, toda a autenticação no site do Discourse ocorrerá no site que você configurou com a opção de site discourse connect url. Isso significa que os usuários criarão suas contas se registrando no seu site externo, em vez de se registrarem no Discourse. Os detalhes da conta serão passados para o Discourse quando os usuários fizerem login via DiscourseConnect. Quando os usuários fizerem o primeiro login no Discourse, os detalhes da conta serão definidos a partir dos dados fornecidos no payload do SSO. Dependendo dos valores de algumas opções de site do Discourse, os detalhes da conta continuarão sendo sincronizados a cada vez que o usuário fizer login no Discourse, ou os usuários poderão definir valores distintos para sua conta no Discourse. As opções relevantes para isso são:

  • 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

Observe que, por padrão, o plugin WP Discourse envia apenas os seguintes campos no payload:

  • username
  • email
  • name
  • bio
  • avatar_url

Parâmetros adicionais podem ser adicionados ao payload conectando-se ao hook de filtro wpdc_sso_params do WP Discourse.

Possivelmente a maior funcionalidade perdida ao ativar o DiscourseConnect é que, quando ativado, ele se torna o único método de autenticação para o site. Isso significa que logins sociais não podem ser habilitados no Discourse junto com o DiscourseConnect. No entanto, você pode habilitar logins sociais no site do seu provedor de autenticação. Por exemplo, você pode permitir que os usuários façam login no seu site por meio de vários provedores de login social e, em seguida, fazer com que eles façam login no Discourse via DiscourseConnect. Uma abordagem semelhante pode ser usada com OAuth2 ou SAML. Os usuários podem fazer login no seu site com esses métodos de autenticação e, em seguida, serem redirecionados para o Discourse para fazer login via DiscourseConnect.

Outra funcionalidade perdida é que a opção de site invite only do Discourse não pode ser habilitada junto com o DiscourseConnect.

A capacidade de sincronizar facilmente dados de usuários de um aplicativo externo para o Discourse é um grande benefício. As associações de grupos do Discourse podem ser definidas facilmente com os campos add_groups e remove_groups que são passados no payload do SSO. O plugin WP Discourse não passa nenhum desses campos por padrão, mas eles podem ser adicionados ao payload conectando-se ao hook de filtro wpdc_sso_params do WP Discourse.

As associações de grupos e qualquer outro campo que possa ser definido no payload também podem ser sincronizados em uma solicitação em segundo plano. Para detalhes, consulte Sincronizar dados de usuário do DiscourseConnect com a rota sync_sso. Para detalhes sobre a sincronização de grupos com o plugin WP Discourse, consulte Gerenciando a associação a grupos do Discourse com o WP Discourse SSO.

Outro ganho possível é que, se você já tiver uma grande base de usuários em um site externo, ativar o DiscourseConnect permitirá que esses usuários façam login no Discourse sem precisar criar uma conta separada no Discourse.

Com o DiscourseConnect, as contas são vinculadas com base no external_id que é passado do site do provedor de SSO para o Discourse. O plugin WP Discourse usa o ID do WordPress do usuário para o external_id.

Sim, por padrão, todos esses campos são definidos com a implementação do DiscourseConnect do WP Discourse. Como mencionado acima, se eles continuarão sendo sincronizados a cada vez que um usuário fizer login no Discourse depende do valor de várias opções de site do Discourse.

7 curtidas