我想弄清楚如何从 .NET 调用 Java Web 服务(黑盒),它期望每个请求都用证书签名(这没问题)。

我不明白。无论我尝试什么,它都失败了。经过几个小时的研究和测试,我认为正确的方法应该是使用 customBinding 而不是 basicHttpBinding。我想要实现的是对 header 和消息正文进行签名。

通过使用身份验证模式 CertificateOverTransport 只对 SOAP header 进行签名,而不对正文进行签名。通过使用身份验证模式 MutualCertificate 一切都被签名和加密。

我有机会禁用整个消息的加密吗?

最佳答案

我知道了。

捆绑:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
          <customBinding>
            <binding name="FFB">
              <context protectionLevel="Sign" />
              <textMessageEncoding messageVersion="Soap11" />
              <security authenticationMode="MutualCertificateDuplex" includeTimestamp="true" />
              <httpsTransport />
            </binding>
          </customBinding>
        </bindings>
    </system.serviceModel>
</configuration>

另外:
service.Endpoint.Contract.ProtectionLevel = ProtectionLevel.Sign;

10-07 17:00