具有基本证书验证和客户端证书验证的WCF客户端

时间:2018-08-01 16:51:52

标签: c# wcf x509certificate basic-authentication ssl-client-authentication

我正在尝试与Web服务端点集成,该端点要求使用WCF进行身份验证需要基本证书和客户端证书。我根据在线建议在下面的不同设置下进行了尝试,但仍然收到“无法使用权​​限XXXXX为SSL / TLS建立安全通道”。服务器使用众所周知的CA,该证书已在Windows证书存储中提供。在代码中,我正在成功添加ClientCredentials.UserName.UserName,ClientCredentials.UserName.Password和ClientCredentials.ClientCertificate.Certificate。

1)

<security mode="TransportWithMessageCredential">
     <transport clientCredentialType="Basic"/>
 </security>

结果:“无法为具有权限XXXXX的SSL / TLS建立安全通道”

2)

<security mode="TransportWithMessageCredential">
     <transport clientCredentialType="Basic" />
     <message clientCredentialType="Certificate" />
 </security>

结果:结果:“无法为具有权限XXXXX的SSL / TLS建立安全通道”

3)

<security mode="Transport">
            <transport clientCredentialType="Certificate"/>
             <message clientCredentialType="UserName" />
  </security>

结果:HTTP请求未经客户端身份验证方案“匿名”授权。从服务器收到的身份验证标头是“ Basic realm =“ Realm””。 ---> System.Net.WebException:远程服务器返回错误:(401)未经授权。

由于服务器期望将clientCredentialType设置为“ Certificate”时返回的错误,因此服务器希望使用Basic身份验证,因此如何使用Basic Authentication附加客户端证书。

注意:使用SOAPUI,我可以成功连接服务器

1 个答案:

答案 0 :(得分:0)

我用“基本和客户端身份验证”替换了2.0 Web Service Reference而不是WCF Service Reference来发送请求,并且它按预期工作。

注意:Web参考是不推荐使用的旧模型。