使用WCF使用HTTPS Web服务

时间:2011-04-12 11:30:10

标签: web-services wcf configuration https fortify

我正在尝试使用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网络服务时,是否可以使用MessageTransportWithMessageCredentials(发布商不做任何更改)?如果是这样,我需要对配置进行哪些更改?

编辑澄清问题。

3 个答案:

答案 0 :(得分:2)

如果您无法让第三方供应商将端点添加到支持邮件安全性的服务中,那么您就会陷入困境。看来他们目前只支持具有传输级别安全性的basicHttpBinding。

传输安全性并不比消息级安全性“安全”低。消息级安全性意味着soap消息的内容已加密。这允许您以明文方式存储或转发消息,并且仍然可以确保没有人可以查看消息。如果您所做的只是通过互联网在您的系统和供应商之间进行通信,那么传输和消息级安全性同样安全。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

您是否有某种例外政策可以记录为什么无法实施Fortify的最佳建议?

我认为您可以做的最好的事情是与您的网络服务供应商沟通,并要求增强功能以​​支持Fortify的传输指南。

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