Могу ли я настроить IP-фильтр для службы WCF? - PullRequest
4 голосов
/ 06 апреля 2009

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

Ответы [ 2 ]

4 голосов
/ 29 апреля 2009

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

0 голосов
/ 06 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...