Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 未经身份验证/授权或证书的WCF消息加密_.net_Wcf_Encryption - Fatal编程技术网

.net 未经身份验证/授权或证书的WCF消息加密

.net 未经身份验证/授权或证书的WCF消息加密,.net,wcf,encryption,.net,Wcf,Encryption,我有一个.NET4.0项目,其中有两个模块将通过WCF服务进行通信,我想实现一个自定义加密机制 我的设想: 我控制两个端点(客户端和服务器),但不控制它们之间的连接 Windows auth是毫无疑问的,因为我现在不知道模块将部署在哪里,很可能它们将部署在不同的域上 我希望在某个时刻截获消息,并使用服务器和客户机上都正确配置的密钥应用自定义加密/解密,因此如果有人成功截获消息,他们将无法对其进行解密 我想用二进制序列化交换数据 我不想在客户端或服务器端设置证书 有谁能指出使用WCF实现此方案

我有一个.NET4.0项目,其中有两个模块将通过WCF服务进行通信,我想实现一个自定义加密机制

我的设想:

  • 我控制两个端点(客户端和服务器),但不控制它们之间的连接

  • Windows auth是毫无疑问的,因为我现在不知道模块将部署在哪里,很可能它们将部署在不同的域上

  • 我希望在某个时刻截获消息,并使用服务器和客户机上都正确配置的密钥应用自定义加密/解密,因此如果有人成功截获消息,他们将无法对其进行解密

  • 我想用二进制序列化交换数据

  • 我不想在客户端或服务器端设置证书


有谁能指出使用WCF实现此方案最明显的解决方案是什么吗?

我想说的是,您不需要安全性-使用对称加密算法加密消息的静态密钥只是安全性的一个概念

无论如何,如果你想做到这一点,确实有扩展点,这将允许你在许多不同的层面上做到这一点

  • 加密整个消息-这将需要自定义消息编码器,这可能很难编写
  • 加密邮件正文-您可以编写自定义的
    IMessageInspector
    ,它将处理邮件正文的加密和解密。标题仍然是纯文本,这是必要的,除非您想更改WCF处理中的许多其他内容。您可以将检查器包装在custom
    IEndpointBehavior
    中,并在代码中强制使用或在配置中声明使用它(您还需要实现custom
    BehaviorExtenxionElement
  • 仅加密标记为自定义
    IOperationBehavior
    的某些操作或标记为
    IContractBehavior
    行为的某些数据,并使用
    IPParameterInspector
    对值进行解密和加密

您可以控制客户端和服务器-使用证书而不是伪造的安全性。

关于您建议的解决方案(使用证书)-您是指在IIS中配置传输级安全性和证书吗?这不是关于您能做什么或不能做什么,而是关于您是否想要安全性。