はい、私たちの WordPress プラグインには、これと似た機能を提供するオプションがあります。仕組みは以下の通りです。ユーザーが WordPress アカウントを作成するか、WordPress サイトにログインすると、Discourse の /admin/users/sync_sso ルートへの呼び出しが行われます。Discourse にまだユーザーが存在しない場合、この呼び出しによって Discourse ユーザーが作成されます。すでに Discourse にユーザーが存在する場合は、この呼び出しを使って、SSO プロバイダー側のサイトに変更されたユーザーの詳細を更新できます。例えば、ユーザーの名前、ユーザー名、またはメールアドレスの更新が可能です。また、Discourse グループへのユーザーの追加や削除にも利用できます。
sync_sso ルートの概要については、Sync DiscourseConnect user data with the sync_sso route をご覧ください。開発者が PHP で書かれた実例を見たい場合は、私たちの WordPress プラグインから以下のファイルをご覧ください:https://github.com/discourse/wp-discourse/blob/master/lib/sso-provider/discourse-sso.php。このファイルで注目すべき主な関数は sync_sso 関数です。
私が知る限り、デメリットは SSO コードの複雑さが増すことだけです。WordPress プラグインでの実装方法では、SSO プロバイダーサイトにログインするたびに Discourse への API 呼び出しが追加されます。これは WordPress のログインイベントにフックされているためです。どのサイトでもこの API 呼び出しがレート制限の問題を引き起こした事例は知りませんが、問題が発生する場合は、新しいアカウントが作成された時のみに呼び出しを行うようにすることも可能です。
このアプローチのメリットは、ユーザーが SSO を通じて Discourse にログインしなくても、ユーザーの詳細を更新できることです。例えば、ユーザーがウェブサイト上で特定のアクションを実行した際に、そのユーザーを Discourse グループに追加することも可能です。
SSO を通じてウェブサイトを Discourse と統合するもう一つのアプローチとして、ウェブサイトに SSO ログインリンクを使用する方法があります。これにより、Discourse フォーラムにログインし、特定のページへ誘導するリンクをウェブサイトに設置できます。設定方法の詳細については、以下のトピックをご覧ください:SSO ログインリンクの作成。