我有以下情况 - 我从我的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>
我做错了什么?
答案 0 :(得分:0)
您必须使用CustomBinding与Java客户端或服务进行互操作。您可以根据您的身份验证模式尝试以下任何绑定。
<customBinding>
<binding name="bindingName">
<textMessageEncoding messageVersion="Soap11" />
<httpsTransport authenticationScheme="Anonymous"
requireClientCertificate="true" />
</binding>
针对上述
尝试不同的authenticationSchemeOR
<customBinding>
<binding name="bindingName">
<textMessageEncoding messageVersion="Soap11" />
<security authenticationMode="CertificateOverTransport" />
<httpsTransport requireClientCertificate="true"/>
</binding>
请参阅link以获取有关authenticationMode的不同选项
希望这有帮助