我有安全模式设置为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>
元素。
我发现即使此部分为空,客户端也可以成功连接服务。我的猜测是客户端使用服务证书的编码值来加密消息。但是当配置中没有指定编码值时,它也有效吗?那是什么目的呢?
答案 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>