クライアントがリクエストを入れることができるキューを作成したいのですが、リソースが利用可能になったときにサーバーワーカースレッドがリクエストを引き出すことができます。
Firebase にデータを注入し直さなければならない外部キュー サービスではなく、Firebase リポジトリでこれを行う方法を模索しています。
セキュリティと検証ツールを念頭に置いて、私が考えていることの簡単な例を次に示します。
- ユーザーはリクエストを「キュー」バケットにプッシュします
- サーバーはリクエストを取り出して削除します ( 1 つのサーバーだけがリクエストを受け取るようにするにはどうすればよいですか? )
- サーバーはデータを検証し、プライベート バケットから取得します (または新しいデータを挿入します)
- サーバーはデータやエラーをユーザーのバケットにプッシュします
これが役立つ可能性がある場所の簡単な例は、認証です。
- ユーザーが認証要求をパブリック キューに入れる
- 彼のログイン/パスワードは彼のプライベート バケット (彼だけが読み書きできる場所) に入れられます
- サーバーは認証リクエストを取得し、ログイン/パスワードを取得し、サーバーのみがアクセスできるプライベート バケットに対して検証します。
- サーバーはトークンをユーザーのプライベート バケットにプッシュします
(確かに、パブリック キューにはまだセキュリティの抜け穴がいくつかあります。この時点で調査しているところです)。
その他の使用例:
- 読み取り専用ステータス キュー (ユーザー ステータスはプライベート バケットを介して伝達され、サーバーはパブリックに対して読み取り専用であるパブリック バケットに書き込みます)
- メッセージ キュー (メッセージはユーザー経由で送信され、サーバーはメッセージがドロップされるディスカッション バケットを決定します)
質問は次のとおりです。
- これは、今後のセキュリティ計画にうまく統合できる優れた設計ですか? 検討されている代替アプローチにはどのようなものがありますか?
- すべてのサーバーがキューをリッスンするようにするにはどうすればよいですか? ただし、各要求を取得するのは 1 つのみです。