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

问题描述 投票:4回答:2

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

wcf security wcf-security
2个回答
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并在与过滤器不匹配时抛出异常。如果有人有兴趣我可以发布我的代码。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.