2009-04-06 9 views
4

WCF APIを変更して、内部IPアドレスのみに公開する新しいサービスを追加します。 APIのすべてのサービスは、SOAP、POX、JSONで利用できます。私が探しているのは、単純なIPアドレスフィルタを実装したり、内部IPからの要求を処理したり、他のすべてを拒否するための動作などです。私はそれが設定で動作するようにしたいと思います。なぜなら、APIの他のすべてのサービスはインターネット上で利用可能なままでなければならないからです。私はいくつかのグーグルを行ったが、WCFに組み込まれたこのようなものは見つけられない。何か不足していますか?WCFサービスのIPフィルタをセットアップすることはできますか?

答えて

4

私はそれを考え出しました。 サービスビヘイビアとしてIPフィルタシステムを実装し、それをweb.configのサービスに追加しました。ここに私の新しいWeb設定行動のセクションがあります:

<serviceBehaviors> 
    <behavior name="ServiceBehaviour"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    <behavior name="RestrictedServiceBehaviour"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
     <IPFilter filter="172.*.*.* 127.0.0.1" />   
    </behavior> 
    </serviceBehaviors> 

のIPFilterクラスは、できるだけ早く要求をキャッチしたクライアントのIPを検査し、それがフィルタに一致しない場合に例外をスローするようにIDispatchMessageInspectorを実装しています。興味があれば私のコードを投稿することができます。

+5

私は興味があります。コードを投稿できますか? – zSynopsis

+2

私も興味があります – nat

+0

@Steveコードも受け取りたいと思います。 – krypru

0

サービスがIISでホストされている場合は、Webサイトごとに(アプリケーションごとではありますが、わかりませんが)IISでこれを行うことができます。

+0

ええ、私はそれを考えましたが、その解決策を避けようとしていました。私は1つのサービスだけを保護したいので、他のアプリケーションは開いたままにしておいて、アプリケーションを2つに分割して、セキュリティ保護されたサービスとセキュリティ保護されていないサービスを分けなければなりません。 – Steve

関連する問題