在使用传输安全性的同时为多个消息ProtectionLevel配置服务
本文关键字:消息 ProtectionLevel 服务 配置 传输 安全性 | 更新日期: 2023-09-27 18:29:02
我有一个WCF服务,我想对其使用消息签名,但仅用于某些调用,其余的不应该签名。我不知道如何设置它来支持两者
消息签名使用非windows用户名和密码,该用户名和密码由服务端的用户名密码验证器验证。已签名和未签名的消息都应使用传输安全性。
下面是我的界面示例:
[ServiceContract(ProtectionLevel=ProtectionLevel.None)]
public interface ISecTest
{
[OperationContract(ProtectionLevel = ProtectionLevel.Sign)]
string GetData(string value);
[OperationContract(ProtectionLevel = ProtectionLevel.None)]
string GetStuff(string stuff);
}
我遇到的问题是,签名似乎完全基于服务的绑定配置,而不是接口上定义的ProtectionLevels
如果我使用以下绑定,两个调用都需要用户名凭据,而不考虑ProtectionLevel属性:
<wsHttpBinding>
<binding name="secureWSHttpBindingConfig">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
<transport clientCredentialType="None" />
</security>
</binding>
</wsHttpBinding>
如果我省略了消息安全性并使用以下绑定,则两个调用都不需要凭据:
<wsHttpBinding>
<binding name="tolerantWSHttpBindingConfig">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</wsHttpBinding>
除了使用消息安全性之外,还使用传输安全性,这是否会造成复杂性?关于如何在一项服务中实现这一点(如果可能的话),有什么建议吗?
谢谢!
使用传输安全性时,不能混合保护级别。如果这对你来说很重要,你就必须使用消息安全性。