2009-04-06 3 views
4

Я изменяю свой WCF API, чтобы включить новую услугу, которая должна быть доступна только для внутренних IP-адресов. Все сервисы в моем API доступны в SOAP, POX и JSON. То, что я ищу, - это поведение или что-то, что позволяет мне реализовать простой фильтр IP-адресов, обрабатывать запросы из внутренних IP-адресов и отрицать все остальное. Я бы хотел, чтобы он работал в конфигурации, потому что все остальные службы API должны оставаться доступными в Интернете. Я сделал некоторые поисковые запросы, но не могу найти ничего подобного, встроенного в WCF. Я что-то упускаю?Могу ли я настроить IP-фильтр для службы WCF?

ответ

4

Хорошо, я понял, и, по-моему, это пятно. Я реализовал систему IP Filter как поведение службы, а затем добавил ее к моей службе в web.config. Вот мой новый веб-конфигурации поведения раздел:

<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 реализует IDispatchMessageInspector поймать запрос как можно скорее, проверьте IP клиента и выбросить исключение, если он не соответствует фильтру. Если кому-то интересно, я могу опубликовать свой код.

+5

Мне интересно. Можете ли вы разместить свой код? – zSynopsis

+2

Мне тоже интересно – nat

+0

@Steve Я тоже хотел бы получить код. – krypru

0

Если ваша служба размещена в IIS, вы можете сделать это с помощью IIS на основе каждого веб-сайта (возможно, для одного приложения, но я не знаю).

+0

Да, я подумал об этом, но пытался избежать этого решения. Поскольку я хочу обеспечить только одну услугу, оставив остальных в приложении открытой, мне придется разделить приложение на две части, отделяя обеспеченные и незащищенные службы. – Steve

Смежные вопросы