我有一个带有两个模块的.NET 4.0项目,它们将通过WCF服务进行通信,我想实现一个自定义加密机制。
我的情景:
我控制两个端点(客户端和服务器)但不控制它们之间的连接
Windows auth是不可能的,因为此时我不知道哪些模块将被部署,并且很可能它们将位于不同的域
我想在某些时候截取消息并使用一个密钥来自定义加密/解密,该密钥将在服务器和客户端上正确配置,因此如果有人设法拦截消息,他们就不会无法解密。
我想使用二进制序列化交换数据
我不想处理在客户端或服务器端设置证书
有人能指出使用WCF实现这种情况最明显的解决方案吗?
答案 0 :(得分:2)
我会说你不想要安全性 - 使用对称加密算法加密消息的静态密钥只是一个安全概念。
无论如何,如果你想这样做,确实有一些扩展点可以让你在很多不同的层面上做到这一点。
IMessageInspector
,它将处理邮件正文的加密和解密。除非您想在WCF处理中更改许多其他内容,否则标题仍将是纯文本格式。您可以将检查器包装在自定义IEndpointBehavior
中,并在代码中强制使用它或在配置中以声明方式使用它(您还需要实现自定义BehaviorExtenxionElement
)。 IOperationBehavior
的操作或一些标有IContractBehavior
行为的数据,并使用IParameterInspector
解密和加密值。 您可以控制客户端和服务器 - 使用证书而不是虚假安全。