繁体   English   中英

通过WCF客户端调用Java SOAP 1.1服务

[英]Calling Java SOAP 1.1 Service by WCF Client

为什么用JAVA编写的SOAP1.1 Web服务可能无法识别WCF客户端传递的有效证书?

我们从服务中收到500错误,表明该服务不信任我们的证书。 与SOAP标准的WCF实现和Java服务所期望看到的有所不同吗?

这是WCF配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <system.serviceModel>

    <behaviors>
      <endpointBehaviors>
        <behavior name="ourCert">
          <clientCredentials>
            <clientCertificate x509FindType="FindBySubjectName" findValue="MyCompany"/>
          </clientCredentials>
        </behavior>
      </endpointBehaviors>
    </behaviors>

    <bindings>
      <customBinding>
        <binding name="wsHttpSoap11" >
          <textMessageEncoding messageVersion="Soap11" />
          <httpsTransport requireClientCertificate="true" />
        </binding>
      </customBinding>
    </bindings>

    <client>
      <endpoint address="https://{site}.com/site.wsdl"
                binding="customBinding"
                behaviorConfiguration="ourCert"
                bindingConfiguration="wsHttpSoap11"
                contract="ServiceContract">
      </endpoint>
    </client>

  </system.serviceModel>

  <system.net>
    <defaultProxy useDefaultCredentials="true" />
  </system.net>

</configuration>

证书是根据信任链验证的,因此生成框架不相关。 还要注意,您使用传输级别证书,因此SOAP不太可能成为错误源。

我建议您执行以下操作:

  1. 为此服务构建一个工作的Java客户端(使用openssl生成证书,或者使用jks格式的证书)。 验证客户端是否正常工作。
  2. 将jks证书转换为pfx,并将其与WCF客户端一起使用。 WCF客户端现在也应该正在工作。

如果WCF仍然失败,则可以比较java和wcf客户端生成的传出SOAP(可以使用fiddler捕获它)。 这可能暗示其他差异(也许您实际上需要消息证书而不是传输,也许您的肥皂版本不匹配,等等)。

暂无
暂无

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

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