如何保护 webHttpBinding?

Posted

技术标签:

【中文标题】如何保护 webHttpBinding?【英文标题】:How to secure webHttpBinding? 【发布时间】:2013-10-06 10:47:36 【问题描述】:

在我的 WCF 服务中,我试图通过 SSL 连接使用 JSON 向客户端发送数据。我能够使用wsHttpBindingTransport 的安全模式将OData 数据库源保护到我的客户端。为什么webHttpBinding 不能做同样的事情来使用 SSL?我将如何配置需要使用 JSON 来使用 SSL 连接的端点?

本质上webHttpBindingwsHttpBinding 有什么区别?

<bindings>
  <wsHttpBinding>
    <binding name="TransportSecurity">
      <security mode="Transport">
        <transport clientCredentialType="None" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <serviceMetadata httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>

  <endpointBehaviors>
    <behavior name="EndpBehavior">
      <webHttp />
    </behavior>
  </endpointBehaviors>
</behaviors>

<services>
  <service behaviorConfiguration="ServiceBehavior" name="DataService4.DataService">

    <endpoint address="" binding="webHttpBinding" contract="DataService4.IService" bindingConfiguration="TransportSecurity" behaviorConfiguration="EndpBehavior" />

    <endpoint contract="IMetadataExchange" binding="mexHttpsBinding" address="mex" />   
  </service>
</services>

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

【问题讨论】:

【参考方案1】:

我认为这篇文章会解决你的问题。 Creating a WCF RESTful Service And Secure It Using HTTPS Over SSL

【讨论】:

链接已损坏。这就是为什么不应将仅链接答案视为答案的原因。 链接没有损坏,我的浏览器出现问题,显示404 not found页面。无论如何,我认为最好在答案中包含这篇文章的摘要,正如它在 SO 的如何回答页面 Always quote the most relevant part of an important link, in case the target site is unreachable or goes permanently offline. 中所说的那样。谢谢。【参考方案2】:

http://www.allenconway.net/2012/05/creating-wcf-restful-service-and-secure.html 的相关部分是这样的:

<bindings>
  <webHttpBinding>
    <binding>
      <security mode="Transport" />
    </binding>
  </webHttpBinding>
</bindings> 

如果需要,还可以删除暴露的元数据。

详细信息记录在 msdn 中:https://msdn.microsoft.com/en-us/library/bb924478(v=vs.110).aspx

相关部分是:

使用 HTTPS 提供传输安全性。该服务需要 配置了 SSL 证书。消息是完全安全的 使用 HTTPS 并且服务由客户端使用 服务的 SSL 证书。客户端认证受控 通过transport of webHttpBinding 的ClientCredentialType 属性。

【讨论】:

以上是关于如何保护 webHttpBinding?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 webhttpbinding 配置中设置代理以使用提琴手

无法在 .NET Core 中使用 WCF WebHttpBinding

webHttpBinding 安全不包含消息节点?

带有 webHttpBinding 的 MessageSecurity

WCF REST (WebHttpBinding) 可以遵守 PROGRAMMATIC 输出缓存策略吗?

webHttpBinding