WCF客户端配置中是否需要certificate encodedValue?

时间:2012-07-25 06:33:12

标签: wcf security

我有安全模式设置为Message:

的WCF服务
<security mode="Message">
   <message 
      clientCredentialType="UserName" 
      negotiateServiceCredential="true" 
      establishSecurityContext="true" 
      algorithmSuite="Default" />
</security>
...
<behaviors>
  <serviceBehaviors>
      ...
      <serviceCredentials>
        <serviceCertificate findValue="my Certifiacate ..."/>
      </serviceCredentials>

和服务证书在serviceBehaviors部分中给出。

当VS创建客户端(.NET)(通过添加服务引用)时,它会在web.config中创建<identity><certificate encodedValue="long string"/></identity>元素。

我发现即使此部分为空,客户端也可以成功连接服务。我的猜测是客户端使用服务证书的编码值来加密消息。但是当配置中没有指定编码值时,它也有效吗?那是什么目的呢?

1 个答案:

答案 0 :(得分:0)

它只会在您在wcf配置中指定要在绑定中使用加密时加密。

<wsHttpBinding>
  <binding>
    <security mode="Message">
      <transport clientCredentialType="Windows" proxyCredentialType="None"
       realm="" />
      <message clientCredentialType="Certificate" negotiateServiceCredential="true"
       algorithmSuite="TripleDesSha256Rsa15" establishSecurityContext="true" />
     </security>
   </binding>
</wsHttpBindings>