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.
simon
2021 年 4 月 23 日午後 6:51
21
これは古い質問ですが、2015 年に投稿されてからいくつかの変更点があります。注目すべき変更点の一つは、現在「Discourse SSO 」ではなく「DiscourseConnect 」という用語を使用していることです。これは、SSO という用語が SAML、OAuth2、Auth0 など、いくつかの異なる認証メカニズムを指す可能性があるためです。DiscourseConnect は、Discourse による SSO の実装です。
DiscourseConnect が有効になっている場合、Discourse サイト上のすべての認証は、discourse connect url サイト設定で指定したサイトで行われます。つまり、ユーザーは 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 を有効にすることで失われる可能性のある最大の機能は、有効化されるとそれがサイトの唯一の認証方法になることです。つまり、DiscourseConnect と併せてソーシャルログインを有効にすることはできません。ただし、認証プロバイダーサイト側でソーシャルログインを有効にすることは可能です。例えば、ユーザーがさまざまなソーシャルログインプロバイダーを通じてウェブサイトにログインできるようにし、その後 DiscourseConnect を介して Discourse にログインさせることができます。同様のアプローチを OAuth2 や SAML に対しても使用できます。ユーザーはこれらの認証方法でウェブサイトにログインし、その後 DiscourseConnect を介して Discourse にログインするためにリダイレクトされます。
もう一つ失われる機能として、DiscourseConnect と併せて invite only サイト設定を有効にできない点が挙げられます。
tobiaseigen:
では、何が得られるのでしょうか?
外部アプリケーションから Discourse へユーザーデータを簡単に同期できることは大きな利点です。Discourse のグループメンバーシップは、SSO ペイロードに渡される add_groups および remove_groups フィールドを使用して簡単に設定できます。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 サイト設定の値に依存します。
「いいね!」 7