同じ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アドレスを確認することによって、通話を許可する良い方法でしょうか。
良い方法がありますか?
いくつかあります。サーバー2が内部的に消費されることになっている場合は、なぜ最初に公開するのですか?発信者を認証するもう1つの方法は、トークンによるものです。 OAuth/JWTトークンを使用して発信者を識別することを検討できます。ほとんどのリクエストヘッダーは簡単に改ざんされる可能性があるためです。 – PoweredByOrange
私はPoweredByOrangeに同意します。ネットワーク外の2番目のサービスを利用してマシンを開けたり、細かい作業をする必要はありません。 –
他にどのように呼び出しを公開するのですか? –