其他电脑上的 WCF SSL 客户端
本文关键字:SSL 客户端 WCF 电脑 其他 | 更新日期: 2023-09-27 18:31:55
我在服务器PC上的WCF中构建了一个Web服务。我已经创建了一个https端点并配置了一些本地证书。现在在网络上,我正在尝试创建一个 C# 控制台客户端来测试服务。但是我收到此错误:未处理的异常:System.ServiceModel.Security.Security协商异常:服务未对调用方进行身份验证。---> System.ServiceModel.FaultException:无法满足对安全令牌的请求,因为 authenti阳离子失败。(以及更多)..
这里是我要连接到的端点的代码:
http://pastebin.com/GGe6YaTb
这将是我的客户:
<bindings>
<wsHttpBinding>
<binding name="WebDataServiceHttpBinding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="https://anlocalip:9651/WebDataService" binding="wsHttpBinding"
bindingConfiguration="WebDataServiceHttpBinding" contract="wcf1.IWebDataService"
name="WebDataServiceHttpBinding">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
</system.serviceModel>
我无法摆脱这个错误,有人可以帮助我吗???
您可能需要在
客户端单元中安装/导入证书。
如何使用 c# 以编程方式将证书安装到本地计算机存储中?>stackoverflow.com
我有一个通过 MakeCert 生成的证书。我想通过对等信任将此证书用于 WCF 消息安全性。如何使用 c# 或 .NET 以编程方式将证书安装到"受信任的人"本地计算机证书存储中?
将证书安装到 C#
中的 Windows 本地用户证书存储中 stackoverflow.com我正在编写一个 Windows 服务,该服务需要在证书存储中有多个证书才能连接到第三方 Web 服务...
或者使用证书保护服务。
如何:使用 X.509 证书保护服务
使用
msdn.microsoft.comX.509 证书保护服务是 Windows Communication Foundation (WCF) 中的大多数绑定使用的基本技术。本主题演练使用 X.509 证书配置自承载服务的步骤。
尝试在打开代理之前设置模拟级别:
serviceProxy.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
serviceProxy.Open();