WCF + SSL,获取方法调用的空结果

时间:2014-05-05 10:03:05

标签: wcf ssl

我有以下情况 - 我从我的WCF客户端调用Java编写的远程服务。此服务具有基于证书的身份验证,使用SSL,并以JKS格式向所有客户端提供证书。我将此证书转换为P12格式并调用服务。 Сall没有引发异常,但返回空结果。

客户端代理我是从服务WSDL生成的。这是我的配置:

<?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="ClientEndPointBehavior">
          <clientCredentials>            
            <clientCertificate storeLocation="CurrentUser" storeName="My" x509FindType="FindBySerialNumber" findValue="01234567"/>
          </clientCredentials>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="MyBinding" allowCookies="true">
          <security mode="Transport">
            <transport clientCredentialType="Certificate"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>     
      <endpoint address="https://myservice/services/"
          binding="basicHttpBinding" bindingConfiguration="MyBinding"
          contract="IContract" name="Contract"  behaviorConfiguration="ClientEndPointBehavior"/>
    </client>
  </system.serviceModel>  
</configuration>

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您必须使用CustomBinding与Java客户端或服务进行互操作。您可以根据您的身份验证模式尝试以下任何绑定。

<customBinding>
<binding name="bindingName">
  <textMessageEncoding messageVersion="Soap11" />
  <httpsTransport authenticationScheme="Anonymous"         
                  requireClientCertificate="true" />
</binding>

针对上述

尝试不同的authenticationScheme

OR

<customBinding>
<binding name="bindingName">
  <textMessageEncoding messageVersion="Soap11" />
  <security authenticationMode="CertificateOverTransport" />
  <httpsTransport requireClientCertificate="true"/>
</binding>

请参阅link以获取有关authenticationMode的不同选项

希望这有帮助