繁体   English   中英

使用WCF消耗HTTPS Web服务

[英]Consuming HTTPS web service using WCF

我正在尝试使用WCF使用客户端的Web服务。 客户端的Web服务通过HTTPS完成,我可以通过以下绑定很好地使用它:

<bindings>
  <basicHttpBinding>
    <binding name="PurchaseOrderSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
        receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
        bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
        maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
        useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="Transport" />
    </binding>
  </basicHttpBinding>
</bindings>

但是,我们的安全团队告诉我,我需要使用MessageTransportWithMessageCredential安全性,因为Fortify 360抱怨Transport安全性太弱。

当我尝试Meesage此错误:

System.InvalidOperationException: BasicHttp binding requires that 
BasicHttpBinding.Security.Message.ClientCredentialType be equivalent to the 
BasicHttpMessageCredentialType.Certificate credential type for secure messages. Select 
Transport or TransportWithMessageCredential security for UserName credentials.

使用TransportWithMessageCredential ,出现以下错误:

System.InvalidOperationException: The username is not provided. Specify username in 
ClientCredentials.

我没有用户名/密码(可以在浏览器中正常连接),所以我的问题是:

使用现有的HTTPS Web服务时,可以使用MessageTransportWithMessageCredentials (发布者无需进行任何更改)吗? 如果是这样,我需要对配置进行哪些更改?

编辑以澄清问题。

如果您无法让第三方供应商向支持消息安全性的服务添加端点,则您将陷入困境。 看来他们目前仅支持具有传输级别安全性的basicHttpBinding。

传输安全并非比消息级安全“差”很多。 消息级安全性意味着对肥皂消息的内容进行加密。 这样一来,您就可以以明文形式存储或转发邮件,并且仍然可以确保没有人可以窥视该邮件。 如果您所做的只是通过Internet在系统和供应商之间进行通信,则传输和消息级别的安全性同样安全。

basicHttpBinding仅支持用户名和证书消息安全性。 因此,一种选择是,如果您没有在系统上验证用户凭据的机制,则使用证书。

<security mode="TransportWithMessageCredential">
    ...
    <message clientCredentialType="UserName"/>
</security>

另一个选项是使用不同的绑定,例如wsHttpBinding,默认情况下启用了消息安全性,并且还支持Windows和已发行令牌凭据类型。 您要实施哪种方法在很大程度上取决于您的实施要求和环境。

您没有某种例外政策,可以据此记录为什么无法实现Fortify的最佳建议吗?

我认为您能做的最好的就是与您的Web服务供应商沟通,并要求进行增强以支持Fortify的运输指南。

另外:我怀疑您说网络浏览器没有证书就可以连接您。 这可能意味着您要连接的系统比您的假设要复杂一些。 不同的连接或不同的URL可能由不同的服务器(SSO?)提供服务,或受不同的安全策略(客户端证书等)约束

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM