背景:ファイルサーバーを作成しています。私はNginxのリバースプロキシの背後にあるTomcatを使用しています。私はUIと多くのエッジサーバーをホストしているメインサーバーを持っています。そこには、ユーザーがアップロードしたファイルを保存しておきたいと思っています。それはプライベートなファイルストレージなので、ファイルアップローダだけがアップロードされたファイルをダウンロードできるはずです。サーバー間のユーザー要求を検証する
問題:セッションを作成してユーザーのアカウントにログインし、ユーザーからのさらなる要求(通常のもの)を検証するためにメインサーバー上のユーザーを認証します。この情報はエッジサーバーには適用されません。エッジサーバーは任意の要求にファイルを提供します。それは私が望むものではありません。私はファイル所有者にのみダウンロードを許可したいと思います。
ここでは、エッジとメインサーバーがセッションを分散しているクラスタとして構成するTomcatクラスタリングを回避しようとしています。サイトはSSLでサポートされています。メインサーバーに既にログインしている(セッションを作成した)ユーザーからファイルダウンロード要求がエッジサーバーに届いたときに、ユーザーのログインステータスを検証する方法はありますか?
信頼境界はどこにありますか?メインからエッジへのリクエストにuserIdが含まれていて、そのファイルを提供する前にエッジを確認できるか、特定のユーザーが許可されていない場合は401 Unauthorizedを返すことができますか?または、サーバー(管理者、通信事業者、従業員など)にアクセスできるユーザーに対しても、できるだけ安全なユーザーファイルを作成する必要がありますか。 – diginoise
何かの間に。 userIdは、ある人が推測できるほど弱すぎます。ファイルへの管理アクセスを拒否するには、ファイル所有者のみが知っているキーを使用してファイル全体を暗号化し、クライアントブラウザで解読する必要があります。私が望むのは、(所有者以外の)いくつかの人がファイルを直接使用してインターネット経由でダウンロードするのを防ぐためです。 – printfmyname
あなたは何らかの形でエッジサーバーのセキュリティトランザクションを認識させる必要があります...セッションの有効期限がメインサーバーの秘密キーで暗号化されたクッキー。エッジサーバーはメインの公開鍵を使用してCookieを復号化します。 – diginoise