ゲーム開発 - ユーザー登録 & データベース管理(アドバイス求む)

皆さん、こんにちは。お元気でお過ごしでしょうか。

これは、方向性についての一般的な質問です。Discourse の登録 / ユーザー管理 / DB を使用して、外部のゲームデータベースに同じ詳細情報を登録したいと考えています(これにより、プレイヤーは同じログイン情報でゲームにログインできます)。

現在、git リポジトリを調べて、物事がどのように機能するかなどを把握しています。

全体的な計画は、前述のとおり、ユーザーがフォーラムに登録すると、Discourse がそのユーザーの詳細をゲームデータベース(別の VPS でホスト)に登録することです。パスワードやメールアドレスを更新した場合も、SQL DB に反映されます。

数時間前にセルフホスト型の Discourse フォーラムを稼働させたばかりなので、現在は Discourse を学習中です。

そこで質問ですが、この作業を開始するために、Discourse のどこから着手すべきでしょうか?

「いいね!」 1

魔法の言葉は「DiscourseConnect」と「identity provider」です :wink:

「いいね!」 4

素晴らしい、これを送ってくれてありがとう!

「いいね!」 3

これはSSO / DiscouseConnectがサードパーティによるメール検証を必要としているようです。

これは私たちの特定のセットアップでは問題となります。なぜなら、通常通りDiscourseにメール検証とアカウント管理を処理させたいのですが、データベース情報をゲームDBに渡すだけだからです。

つまり、SSOとは逆のことです。

簡単に言うと、Discourseがすべてを処理する必要があります。私はそのDBからユーザー情報の一部を取得するだけでよいのです。

Discourse をアイデンティティプロバイダーとして使用すると、Discourse がメール検証を処理します。\n\nユーザーが Discourse で SSO フローを完了し、あなたのウェブサイトに戻ると、Discourse が埋め込みクエリ文字列として sso パラメータに追加するレスポンスを使用できます。このレスポンスには、メール、ユーザー名、名前、グループなどが含まれます(パスワードは含まれません。それは良い考えではありません)。このレスポンスを抽出し、提供された sig を使用して適切に検証できます。\n\n[quote="Arpit Jalan, post:1, topic:32974, username:techAPJ"]\n## Discourse からのレスポンスを取得する:\n\n上記の手順が正しく完了すると、Discourse はログインしたユーザーを指定された RETURN_URL にリダイレクトします。sigsso のクエリ文字列パラメータと、いくつかのユーザー情報が取得されます。次に、以下の手順に従います。\n\n* sso の HMAC-SHA256 を、sso プロバイダーのシークレットをキーとして計算します。\n* sig を 16 進数文字列表現からバイトに戻します。\n* 上記の 2 つの値が等しいことを確認します。\n* sso を Base64 デコードします。埋め込まれたクエリ文字列が得られます。このクエリ文字列には nonce というキーがあり、その値は元々渡された nonce と一致する必要があります。このことを確認し、システムから nonce を削除してください。\n* このクエリ文字列には、多くのユーザー情報も含まれていることがわかります。必要に応じて使用してください。\n[/quote]

「いいね!」 2

はい、承知いたしました。
Discourse が情報を送信する相手はウェブサイトではありません。

ゲームサーバー、つまり MySQL が稼働している VPS です。

以前のワークフローは以下の通りでした。
ユーザーが「アカウントを登録する」際に Unity が SQL テーブルに情報を入力します。

私がやりたいのは、Discourse を登録とアカウント管理のプロバイダーとして使用することです。

つまり、ユーザーは Discourse で登録し、その情報を使用してゲームサーバー(Unity クライアント経由)にログインします。

そのため、Discourse のユーザーデータを MySQL データベースに確実に転送する方法が必要です。
(両方とも同じマシン上にあります。)

このために、Postgres 用の外部データラッパー(Foreign Data Wrapper)を設定し、MySQL に接続し、トリガーを使用して適切にデータを入力するようにしました。

そして、ユーザーがゲーム内で(Discourse の)メールアドレスとパスワードを入力すると、理論上はログインできるようになります。

最近読んだ別の問題は、Discourse が使用するパスワードハッシュ(多くの理由で良いことですが)です。ハッシュは一意であるため、その方法ではできません。

したがって、ここでも SSO 用のウェブサイトはなく、Discourse とビデオゲームサーバーが稼働している別の VPS がクライアントに接続するだけです。