web-dev-qa-db-ja.com

ASP.NET WebAPIおよびブラウザーベースのアプリケーションを実稼働環境に展開する方法

(これが間違ったフォーラムに投稿された場​​合はご容赦ください。どこに投稿するか正確にはわかりませんでした。)

ASP.NET WebAPIシングルページアプリケーションがあります-IISで実行されているブラウザーベースのアプリは、ASP.NET WebAPIエンドポイントとのみ通信するHTML5/CSS3/JavaScriptを提供しますデータベースにアクセスしてJSONデータを転送します。開発環境ではすべてがうまく機能しています。つまり、ASP.NET WebAPIプロジェクトを備えた1つのVisualStudioソリューションと、データアクセス用の2つのクラスライブラリプロジェクトがあります。開発ボックスでの開発とテスト中、IIS Express to localhost:portを使用してサイトを実行し、Web APIにアクセスすると、すべて問題ありません。

次に、それを本番環境に移動する必要があります(そして、問題が発生している、または何をする必要があるのか​​理解していないだけです)。

実稼働環境はすべて内部にあります(パブリックインターネットには何も公開されません)。 2つのドメインがあります。 1つのドメインである企業ドメインは、すべてのユーザーが通常どおりログインする場所です。もう1つのドメインであるプロセスドメインには、アプリとWebAPIがアクセスする必要のあるSQLServerインスタンスが含まれています。

ITスタッフは、2つのドメインの間にDMZを配置して、IISアプリを格納し、企業ドメインのユーザーがプロセスドメインにアクセスできないように保護したいと考えています。だから、彼らが望んでいるのは:

corpドメイン(エンドユーザー)<–>ファイアウォール(ポート80を開く)<–> DMZ(IISを実行しているWebサーバー)<–>ファイアウォール(ポート80または1433を開く????)< –>プロセスドメイン(WebAPIおよびSQLServerのIIS)

私たちは開発者であり、ネットワークのすべての側面を実際に理解しているわけではないため、このシナリオでブラウザ/ WebAPIアプリケーションをデプロイする方法を考えています。

  1. Web APIがインストールされている間、すべてのクライアントコード(HTML5/CSS3/JavaScript/images /etc。)がDMZのIISサーバー上にあるように、アプリケーションを分割する必要がありますか?プロセスドメインのサーバー上?
  2. または、アプリ全体(クライアントコードとWeb API)がDMZのIISサーバー上に一緒に残り、それが何らかの形でSQL Serverインスタンスにアクセスしてデータを取得しますか?
  3. DMZのIISサーバーとアプリから、「 http:// server/appname/api」に移動して、プロセスドメインのサーバー上のWeb APIにアクセスするだけですか?/getitmes "?
  4. DMZとプロセスドメインの間の2番目のファイアウォールでは、Web APIはHTTPエンドポイントであるため、ポート1433を開く必要がありますか、それともポート80だけを開く必要がありますか?
  5. または、より良い展開方法はありますか(つまり、すべてHTML5とJavaScriptで記述されたASP.NET Web APIシングルページアプリケーションを本番環境に展開する方法はありますか?)

他にも質問があると思いますが、まずはこれらから始めましょう。ありがとう!!!

(注:サーバーはWin2k8 R2、SQL Server 2k8 R2、およびIIS 7.5)です。)

2
lmttag

あなたのITグループがこれを打ち破ろうとしていることは理解できますが、彼らもこの設定がどのように機能するかを完全には理解していないようです。あまり詳しくは説明しませんが、基本的にprocessドメインまでのサーバーと交換するトラフィックは標準のHTTPトラフィックのみです(REST呼び出し)

基本的に、次のようになります。

           Initial Request
SPA Web Server ---> Client (Running SPA)
                      |
                      | - REST Call
          Firewall -> | - Port 80 Only
                Web API Server
                      |
                      | - SQL (1433) .NET Connection/Data Source
          Firewall -> | - Port 1433 / 1434
             Backend SQL Servers

SPAを使用する場合、クライアントがSPA Webサーバーと通信するのは、HTML、JS、およびCSSを取得するための最初の要求のみであることに注意してください。その後(作成方法によって異なります)、WebAPIサーバーに対してREST呼び出しを直接発行する必要があります。

Web APIサーバーは、そこからデータベースに直接SQLクエリを発行します。

したがって、その長短は次のとおりです。

TL; DR:HTTPとHTTPSのいずれかまたは両方を許可するには、クライアントと2つのIISインスタンス(同じサーバーでもかまいません))の間にファイアウォールが必要です。次に、そのWebサーバーの別のインターフェイスで、プロセスドメインに接続し、SQLトラフィックのみの受信を許可します(1433および1434)。

お役に立てば幸いです。

0
Brent Pabst