【问题标题】:Can I setup an IP filter for a WCF Service?我可以为 WCF 服务设置 IP 过滤器吗?
【发布时间】:2010-10-17 20:17:29
【问题描述】:

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

【问题讨论】:

    标签: wcf security wcf-security


    【解决方案1】:

    好的,我想通了,在我看来,它有点圆滑。 我将 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,如果与过滤器不匹配则抛出异常。如果有人有兴趣,我可以发布我的代码。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 是的,我想到了这一点,但试图避免这种解决方案。由于我只想保护一项服务,而让应用程序中的其他服务保持打开状态,因此我必须将应用程序分成两部分,将安全服务和非安全服务分开。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 2021-09-20
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多