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.

이 질문은 오래되었지만, 2015년에 질문된 이후 몇 가지 변화가 있었습니다. 주목할 만한 변화 중 하나는 이제 Discourse SSO 대신 DiscourseConnect라는 용어를 사용하고 있다는 점입니다. 이는 SSO라는 용어가 SAML, OAuth2, Auth0 등 여러 가지 인증 메커니즘을 가리킬 수 있기 때문입니다. DiscourseConnect는 Discourse의 SSO 구현 방식입니다.

DiscourseConnect가 활성화되면, discourse connect url 사이트 설정으로 지정한 사이트에서 Discourse 사이트의 모든 인증이 수행됩니다. 이는 사용자가 Discourse에 가입하는 대신 외부 사이트에서 가입하여 계정을 생성한다는 것을 의미합니다. 사용자가 DiscourseConnect를 통해 로그인할 때 계정 정보가 Discourse로 전달됩니다. 사용자가 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

WP Discourse의 wpdc_sso_params 필터 훅을 사용하여 페이로드에 추가 매개변수를 추가할 수 있습니다.

DiscourseConnect를 활성화함으로써 잃게 되는 가장 큰 기능은, 활성화되면 그것이 사이트의 유일한 인증 방법이 된다는 점입니다. 이는 Discourse에서 DiscourseConnect와 함께 소셜 로그인을 활성화할 수 없다는 것을 의미합니다. 대신 인증 제공자 사이트에서 소셜 로그인을 활성화할 수 있습니다. 예를 들어, 사용자에게 다양한 소셜 로그인 제공자를 통해 웹사이트에 로그인할 수 있도록 허용한 후, DiscourseConnect를 통해 Discourse에 로그인하도록 할 수 있습니다. OAuth2나 SAML에도 유사한 접근 방식을 사용할 수 있습니다. 사용자는 이러한 인증 방법으로 웹사이트에 로그인한 후, DiscourseConnect를 통해 로그인하기 위해 Discourse로 리디렉션됩니다.

또 하나 잃게 되는 기능은, Discourse의 invite only 사이트 설정을 DiscourseConnect와 함께 활성화할 수 없다는 점입니다.

외부 애플리케이션에서 사용자 데이터를 Discourse로 쉽게 동기화할 수 있는 것은 큰 이점입니다. SSO 페이로드로 전달되는 add_groups와 remove_groups 필드를 사용하여 Discourse 그룹 멤버십을 쉽게 설정할 수 있습니다. WP Discourse 플러그인은 기본적으로 이 필드 중 어느 것도 전송하지 않지만, WP Discourse의 wpdc_sso_params 필터 훅을 사용하여 페이로드에 추가할 수 있습니다.

그룹 멤버십과 페이로드에서 설정할 수 있는 다른 필드들도 백그라운드 요청을 통해 동기화할 수 있습니다. 자세한 내용은 Sync DiscourseConnect user data with the sync_sso route를 참조하십시오. WP Discourse 플러그인을 사용하여 그룹을 동기화하는 방법에 대한 자세한 내용은 Managing Discourse group membership with WP Discourse SSO를 참조하십시오.

또 다른 가능한 이점은, 이미 외부 사이트에 대규모 사용자 기반을 가지고 있다면, DiscourseConnect를 활성화함으로써 이 사용자들이 별도의 Discourse 계정을 만들지 않고도 Discourse에 로그인할 수 있게 된다는 것입니다.

DiscourseConnect를 사용하면, SSO 제공자 사이트에서 Discourse로 전달되는 external_id를 기반으로 계정이 연결됩니다. WP Discourse 플러그인은 external_id로 사용자의 WordPress ID를 사용합니다.

네, 기본적으로 WP Discourse의 DiscourseConnect 구현을 통해 이러한 모든 필드가 설정됩니다. 위에서 언급했듯이, 사용자가 Discourse에 로그인할 때마다 이 필드들이 계속 동기화되는지는 다양한 Discourse 사이트 설정의 값에 따라 달라집니다.