在WCF中,ProtectionLevel
是一个相当重要的概念。保护级别控制消息的加密和签名方式。WCF设置绑定的保护级别?
据我所知,设置保护级别的唯一方法是将属性应用于代码,可用于设置属性的最大范围是使用服务合约接口上的ServiceContract
属性。
例如,您将服务合同界面代码分发给第三方的情况。即您手中的第三方*.cs
文件,其中包含:
// inside this attribute is where you put ProtectionLevel = ...
[ServiceContract(Namespace = "some:name:space")]
public interface IMyService
{
[OperationContract(Action = "...", ReplyAction = "...")]
Message MyOperation(Message request);
}
现在想象一下,有人想使用在各种情况下该服务合同。在一种情况下,用户希望使用签名消息进行通信(不加密)。在另一种情况下,用户希望签名和加密。
现在,如果我理解正确,用户需要两个服务合同,一个保护级别为Sign
,另一个保护级别为SignAndEncrypt
。
对我来说这个设计看起来有点奇怪:毕竟,大多数WCF安全设置都是在绑定级别(通过.config文件或代码)配置的。
我的问题:
- 为什么不能直接设置的保护级别上的绑定? (或其他范围比服务合同范围更宽)
- 或者也许这是可能的?如果是这样,怎么样?
一些文档链接:
好的我想我明白了。但是想象一下这种情况: 一)信息安全 b)一个单一的服务合同 三)我想用签名和加密 d调用服务的一个)我想用签名只 我将如何指定调用服务中有两个c)和d)之间的区别? – codeape
@codeape - 我想我应该正确地阅读你的问题。在这种情况下,是的,你是对的。除非你有两个不同的服务合同,否则对于你的具体情况是没有办法的。但是,我会猜测这是一个纯粹设计的场景,而不是你正在面对的实际场景? –
是的你是对的,这是我试图理解WCF。我不断调整绑定配置,并在提琴手中查看请求和响应。你有任何关于WCF博客,书籍或其他资源的深入探讨事实真相的技巧吗?国际海事组织,WCF文件太高。 – codeape