2016-04-06 4 views
0

私はASP.Net MVC(いずれかのVMまたはAzureのWebAppの上でホストされている)、Azureのファイルストレージに、認証のためのASP.Netアイデンティティプロバイダで構築されたソリューションを持っています。Azureのファイルストレージ:認証された直接ダウンロード

ソリューションは、サーバーからファイルのアップロードとダウンロードの多くが含まれます。ファイルがダウンロードされる前に

は、いくつかの認証は、最初のサーバー上で行わなければなりません。

これは、現在、次のように私の溶液中で実装されています。

  1. 署名-にダウンロードリンク/ボタンやHTTPリクエストをユーザーがクリックするサーバーに送信されます。
  2. ASP.Net MVC制御方法は、認証し、特定のユーザのためのダウンロードを許可します。
  3. コントローラメソッドは、Azureファイルストレージからファイルストレージからサーバーにファイルをダウンロードします。
  4. ファイルは、サーバーからログインユーザーにストリーム配信されます。

それは次のような欠点を有していることが上記のアプローチから気づいている:

  • サーバリソースのかなりの量が、メモリ、ディスクI/O、処理能力を含むプロセス中に使い果たされます。
  • それは内とWebサーバのうち、ネットワークトラフィックの多くを生成します。
  • 上記の結果は、私の解決策は、私が何とかするファイルストレージから直接ダウンロードを確立することができれば
  • 上記の多く

を回避することができるので、上記2点のかなり大きな価格ティアを必要とすることですWebサーバ/コントローラメソッドから要求が承認された後、クライアント/ユーザに送信されます。

解決策は、要求が承認されるとすぐに要求されたファイル(短いアクセス許可で)にSAS(共有アクセス署名)を生成し、クライアントを直接ダウンロードURLにリダイレクトすることですSASと

このアプローチを使用すべきではない理由があるのですか、それともより良いアプローチがありますか?

答えて

1

私が出ているソリューションは、 要求が認可されているとすぐに(短い寿命を持つ)要求されたファイル上のSAS(共有アクセス シグネチャ)を生成し、その後にクライアントをリダイレクトすることですSASと 直接ダウンロードURL。

良いアプローチだと思います。このアプローチは、あなたが言及したすべての欠点を克服します。

私はこのアプローチを使用すべきではない理由があるのですか? より良いアプローチがありますか?

(すでに行っているように)SASを短期間に保つことは別として、私が考えることができるいくつかのことがあります。彼らはあなたに意味をなすかどうかを確認してください:

  • あなたのSASにACLing IPアドレスが含まれています。これにより、SAS URLが定義されたIPアドレスでのみ動作するため、SAS URLの共有が防止されます。
  • 強制ダウンロード。 SASのコンテンツ処理ヘッダーを上書きして、ファイルをダウンロードする代わりに自動的にダウンロードされるようにすることができます。
+0

フィードバックありがとうございます。私は強制/自動ダウンロードを行う予定でしたが、IPアドレスACLについては考えていませんでした。私はこのオプションをAzureで達成できるかどうかを確かめるために調査し、その結果を元に戻します。 –

+1

IP ACLは、SAS自体で利用可能になりました。詳細については、このリンクを参照してください:https://azure.microsoft.com/en-in/documentation/articles/storage-dotnet-shared-access-signature-part-1/ –

+0

素晴らしい!それは仕事をするでしょう。ありがとう! –

関連する問題