我可以为WCF服务设置IP过滤器吗?

时间:2009-04-06 15:35:42

标签: wcf security wcf-security

我正在修改我的WCF API以包含应该仅暴露给内部IP地址的新服务。我的API中的所有服务都以SOAP,POX和JSON提供。我正在寻找的是一种行为或某种东西,它允许我实现一个简单的IP地址过滤器,处理来自内部IP的请求,并拒绝其他一切。我希望它在配置中工作,因为API中的所有其他服务应该仍然可用于Internet。我做了一些谷歌搜索,但找不到像WCF内置的任何东西。我错过了什么吗?

2 个答案:

答案 0 :(得分:4)

好的,在我看来,我想通了,它的光滑。 我将IP过滤器系统实现为服务行为,然后将其添加到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并在与过滤器不匹配时抛出异常。如果有人有兴趣,我可以发布我的代码。

答案 1 :(得分:0)

如果您的服务托管在IIS中,那么您可以在每个网站的基础上使用IIS执行此操作(可能是每个应用程序,但我不知道)。