我正在修改我的WCF API以包含应该仅暴露给内部IP地址的新服务。我的API中的所有服务都以SOAP,POX和JSON提供。我正在寻找的是一种行为或某种东西,它允许我实现一个简单的IP地址过滤器,处理来自内部IP的请求,并拒绝其他一切。我希望它在配置中工作,因为API中的所有其他服务应该仍然可用于Internet。我做了一些谷歌搜索,但找不到像WCF内置的任何东西。我错过了什么吗?
好吧,在我看来,我想通了,它的那种光滑。我将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并在与过滤器不匹配时抛出异常。如果有人有兴趣我可以发布我的代码。
如果您的服务托管在IIS中,那么您可以基于每个网站(可能是每个应用程序,但我不知道)使用IIS执行此操作。