2009-03-23 7 views
2

IIS上での展開のために.Net 2.0を使用してC#を使用する従来のASMX Webサービスを作成しています。 Webサービスは、各クライアントが別々の仮想ディレクトリに置かれたアプリケーションの独自のコピーを持っている共有ホスティング環境に配備されます(私は知っています - それは従来のアプリケーションです)。各仮想ディレクトリにWebサービスの個々のコピーが置かれます。プログラムでWebサービスへのアクセスを制限するにはどうすればよいですか?

Webサービスは強力な機能を提供する可能性があるため、特定のIPアドレスへのアクセスを任意に制限したいと考えています。ファイアウォールでこれを行うことは、制限されるべきウェブサービスであり、ウェブサイトの残りの部分ではなく、仮想ディレクトリごとのレベルであるため、非常に良い選択肢ではありません。

リクエスタのIPアドレスをプログラムで読み取ってリストと比較すると、他のアドレス指定からのコールを拒否できますか?これに大きな落とし穴がありますか?

ありがとうございました

答えて

4

はい、あなたは簡単にそれを行うことができます。

[WebMethod] 
public bool IsAlive() 
{ 
    string callingAddress = HttpContext.Current.Request.UserHostAddress; 
    return (callingAddress == allowedAddress); 
} 

唯一の落とし穴は、IPアドレスのリストの維持です。

IIS内からWebアプリケーション単位でIPアドレスアクセス制御を構成できることにも注意してください。私はいろいろな時代に両方のアプローチを使用しました。そして、実際には、許可されたIPアドレスのリストをどのように維持したいのかが分かります。

関連する問題