【发布时间】:2011-04-27 18:29:41
【问题描述】:
我创建了一个 wcf 服务,并且可以成功地在客户端应用程序中引用它。但是当我实现 X509 证书时,问题就来了。
1) 当我将服务更改为使用 x509 证书时,我无法创建代理,因为浏览器中未显示 mex 端点。那么在这种情况下,当服务受到保护且 mex 端点未公开时,我应该如何在客户端应用程序中引用服务?
2) 我可以同时使用消息和传输安全作为证书吗?这种情况适用于 basicHttpBinding 吗?听说basicHttpBinding不能通过证书来保证消息安全。
在这方面的任何帮助,将不胜感激。
这是我在 Service 中的服务模型。
<system.serviceModel>
<client>
<endpoint behaviorConfiguration=""
binding="basicHttpBinding"
bindingConfiguration="WCFServiceX509Binding"
contract="WCFService.Contract.Service.IWCFServiceContract"
name="WCFServiceClientEndPoint" />
</client>
<bindings>
<basicHttpBinding>
<binding name="WCFServiceX509Binding" maxBufferSize="6553600"
maxBufferPoolSize="52428800" maxReceivedMessageSize="6553600">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Certificate" />
<message clientCredentialType="Certificate" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="ServiceBehavior"
name="WCFService.Model.WCFServiceModel">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="WCFServiceX509Binding"
name="WCFServiceBasicHttpEndPoint"
contract="WCFService.Contract.Service.IWCFServiceContract">
<identity>
<certificateReference findValue="WCFUADOCServer" />
</identity>
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="ClientCertificateBehavior">
<clientCredentials>
<clientCertificate findValue="WCFUADOCServer"
x509FindType="FindBySubjectName"
storeLocation="LocalMachine"
storeName="TrustedPeople" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
非常感谢, 钱。
【问题讨论】:
标签: wcf service certificate x509