wsHttpBinding 配置中的消息节点是关于配置 SOAP 消息安全头的,这就是为什么它对不是基于 SOAP(它是 REST)的 webHttpBinding 无效的原因
REST 服务的适当安全性很可能是传输级别 - 即 HTTPS。
如果您想使用消息级别的安全性,您需要切换到 SOAP,但消息级别是相当专业的,在大多数情况下没有必要。
如果您需要为 webHttpBinding 使用证书(这意味着使用双向 SSL),您需要将 securityMode 设置为 Transport 并将 clientCredentialType 属性设置为 Certificate。在配置中,它在服务器端看起来像这样
<webHttpBinding>
<binding name="ClientCertServerSide">
<security mode="Transport" >
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</webHttpBinding>
在客户端,您可以在代码(使用HttpWebRequest.ClientCertificates
属性)或配置中指定证书。在配置中它看起来像
<endpointBehaviors>
<behavior name="ClientCertClientSide">
<clientCredentials>
<clientCertificate findValue="put the cert name here" storeLocation="put the store here" />
</clientCredentials>
</behavior>
</endpointBehaviors>