基本的には、OpenID や OAuth に対応していないソーシャルアカウント(Riot アカウントなど)の所有者であることをユーザーに確認させたいと考えています。これを行うための最適なアプローチは何でしょうか?外部アプリがデータベースを編集する際に、Discourse を OAuth プロバイダーとして利用することは可能でしょうか?Discourse についてはまだ詳しくないため、このような仕組みを作るための最適な方法を模索しています。
@falco さんは Riot の経験があるとおっしゃっていましたが、本当ですか?
それは興味深い問題ですね。私たちが実験したアプローチの一つに、Keybase を利用する方法がありました。Keybase はすでに多くのプラットフォームに対応した堅牢な本人確認システムを持っています。当社の実験については、Discourse Keybase Proof をご覧ください。Zoom が買収した現在、それがどうなっているかはわかりませんが。
この部分は少し奇妙に感じられます。Discourse が Riot の IdP になることが、どうやって Discourse 上で既存の Riot/Matrix アカウントの所有権を証明するのに役立つのでしょうか?
もう少し詳しく説明していただけますか?昨日は Matrix の SSO について調べていましたが、ついに何らかの機能を実装しました。SAML と、develop ブランチでは oAuth2 の両方をサポートしています。Discourse はサーバーとしては機能せず、クライアントとしてのみ機能するため、Discourse を oAuth2 サーバーとして動作させるか、Synapse に Discourse 独自の SSO プロトコルのサポートを追加するかのどちらかを検討していました。これがあなたのニーズに応えられるかどうかはわかりませんが…
Riot に、ユーザーが制御できるパブリック URL は存在しますか?例えば、ユーザーがコードを挿入できる公開されたプロフィールのようなものですか?その場合、Discourse プラグインがコードを生成し、ユーザーがそれをプロフィールに挿入し、Riot ユーザー名を入力すると、URL/<riot-username>/bio からそのコードを検出するという仕組みが考えられます。
このようなシステムがあれば、いくつかのシステム設定によって複数のサードパーティサイトに対応可能な、比較的汎用的なプラグインを実現できます。
私が採用に賛成している標準は、「双方向リンク rel="me"」です。そのページから Discourse プロフィールへのリンクと、Discourse プロフィールからそのページへのリンクの両方を追加してください。両方のシステムが相手の URL をクロールし、rel=me を確認して、
検証済みとしてマークします。
この標準を実装していないプラットフォームからバイオフィールドを取得する特別なケースは、別途対応可能です。
私が言いたいのは、Discourse を私の独自スタンドアロンプログラムの IdP として使うことです。まだパブリックな OAuth ソリューションを提供していない Riot Games ID のようなものをリンクさせる最適な方法がわかりません。RSO が発表されたばかりですが、パブリック利用開始の日程は発表されていません。
現在、サードパーティのアプリケーションが Riot アカウントを「検証」するには、ユーザーが League of Legends クライアントにログインし、設定タブ内のフィールドを変更する必要があります。Discourse から League API を経由して、検証後にカスタムプロフィールフィールドを追加する方法を考えていました。
参考までに、コードの該当部分を示します。基本的に、このコードの値が指示された値と一致するかどうかを League API で確認できるようになります。
また、Discourse では SAML ログインシステムを使用しており、これは私のウェブサイトの他の部分と連携しています。同様に「検証済み」の Discord ユーザー名を追加する方法を探していました。Discourse にログインしているユーザーが Discord OAuth を介して OAuth プロンプトを表示し、Discourse 側で値を変更する方法がわかりません。
これで私の意図が伝わり、達成しようとしていることが理解いただけたら幸いです。まだ必要な情報があれば提供できます。プロフィールに検証済みのアカウントを表示したいだけです。Minecraft (Mojang)、Discord、Riot Games (League of Legends) を対象に予定していますが、なりすましを防ぐために、検証済みの値である必要があります。
Valorant ベータ版の配布時に使用された Twitch と Riot の連携は、login 経由の OAuth2 だったと記憶しています。client_id を作成できるかどうかはわかりません。
なるほど、それはカスタムプラグインで実現できそうですね!
ネイティブの Discord 統合を使用すれば問題なく動作するはずです。Discord ログインを有効にするだけで、ユーザーはプロフィール画面から Discord プロフィールをリンクできます。
はい、現在は非公開でまだ初期段階です。開発者サイトの記事 https://www.riotgames.com/en/DevRel/rso でその話が出ています。
私もそう思ったので、実際に動作するか試してみます。
ネイティブDiscord連携を使わない理由は、私の他のウェブサイトではメインのIdPを通じて認証を統一しており、ユーザーにウェブサイト全体で1つのアカウントしか作成させたくないからです。もし可能であれば、League of Legendsプラグインが動作するか確認し、私が考えていることを実現するのがどれほど難しいか検討してみます。PHPアプリケーションなどでユーザープロフィールにアクセス・編集する方法があるかどうか、少し不安でした。最終的には、DiscordでサインインするシンプルなOAuthログインシステムをPHPで作ろうと考えていましたが、Discourse経由でリクエストを開始し、PHPスクリプトがその正当性を検証しない限り、どのユーザーがリクエストを開始したかをPHPスクリプトに「伝える」方法がわからず、困っていました。
皆さんからの回答に本当に感謝しています。Discourseの管理自体は初心者なので、皆様の助けに大変感謝しています。![]()
ええと、API を通じて外部プログラムよりもプラグインの方がより多くのアクセス権を持っているかどうか調べる必要があります。https://docs.discourse.org/ のドキュメントでは、API を通じてユーザーフィールドを編集する方法が見つからなかったためです。
