2016-12-02 11 views
1

同じC#Webサービスを実行する2つのWebサーバーがあります。C#REST API:信頼できるサーバーからの呼び出しを許可する

サーバー1がサーバー2のWEB APIを呼び出してデータを取得するようにします。

しかし、私は唯一のサーバ1はそれを呼び出すことができるようにしたい、私は、クライアントがそれを呼び出すことができるようにしたくない:

[HttpGet] 
     public HttpResponseMessage GetData() 
     { 
       If(IsCallFromInternalWebServer()) // Call is from other server 
       { 
         // return Data 
       } 
       Else 
       { 
        return Request.CreateResponse(HttpStatusCode.Unauthorized); 
       } 

     } 

次のように私は、コールのIPアドレスを取得することができます。

public static string GetCallerIP(HttpRequest request) 
{ 
    string ip = request.Headers["X-Forwarded-For"]; // AWS compatibility 

    if (string.IsNullOrEmpty(ip)) 
    { 
     ip = request.UserHostAddress; 
    } 
    return ip; 
} 

これは、IPアドレスを確認することによって、通話を許可する良い方法でしょうか。

良い方法がありますか?

+0

いくつかあります。サーバー2が内部的に消費されることになっている場合は、なぜ最初に公開するのですか?発信者を認証するもう1つの方法は、トークンによるものです。 OAuth/JWTトークンを使用して発信者を識別することを検討できます。ほとんどのリクエストヘッダーは簡単に改ざんされる可能性があるためです。 – PoweredByOrange

+0

私はPoweredByOrangeに同意します。ネットワーク外の2番目のサービスを利用してマシンを開けたり、細かい作業をする必要はありません。 –

+0

他にどのように呼び出しを公開するのですか? –

答えて

1

外部と内部のコールを同じサービスで混用しないでください。つまり、サービス上で、インターネット上のクライアントから呼び出される必要のあるコール(アクション)があり、内部サービスであり、自分のサービスにしかアクセスできないコールである場合、このサービスは2つに分離する必要があります。公開されたものと内部のものがあります。これにより、攻撃面が大幅に減少します。

これはすでにそうですが、内部サービスは公開エンドポイントを持つべきではありません。 AzureまたはAWSでは、パブリックIPアドレスをそのサービスに割り当てるべきではありません。内部IP経由で他のサービスからアクセスすることはできます。しかし、徹底的な防御の例として、バックエンドにも適切な認証を実装する必要があります。発信者のIPアドレスを制限することは有益であり、リスクをいくらか緩和することができますが、セキュリティの唯一の層であってはなりません。

バックエンド(内部)サービスの認証に関して、C#.NET Web APIについて言及しているように、Windows認証は簡単なオプションです。IISで設定することができ、他のアプリケーションを実行しているIDを認証できます(またはサービス)を呼び出すことができます。内部サービスにそれ以上の権限がない場合、フロントエンドの妥協は自動的にバックエンドの妥協案になります。

コメントで他のユーザーが推奨するようにトークン(OAuth、JWTなど)を使用することもできますが、そうであれば、外部クライアントを認証するのではなくトークンを何らかの方法で管理する必要があります。内部アプリケーションやサービスのみ、実際にはそれほど難しくないかもしれません。

+0

両方のサーバーに公開APIがあります。したがって、IISの制限はオプションにはなりません。 –

+0

しかし、それは私が何を言おうとしていたかのポイントのようなものです。 「外部」コールと「内部」コールが別々の場合は、2つの別々のサービスである必要があります。申し訳ありませんが、私は質問を誤解した場合、私は私の答えを削除することを嬉しく思います。 –

+0

どうすればREST APIが内部にあるのかわかりません –

関連する問題