我正在尝试与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,我可以成功连接服务器
答案 0 :(得分:0)
我用“基本和客户端身份验证”替换了2.0 Web Service Reference而不是WCF Service Reference来发送请求,并且它按预期工作。
注意:Web参考是不推荐使用的旧模型。