使用netTcpBinding时,在WCF中实现加密的最简单方法是什么?

时间:2011-05-04 12:41:36

标签: c# wcf security tcp nettcpbinding

我正在实施一个WCF服务,该服务将在私有LAN中使用(部分)。

我将使用netTcpBinding并希望在通信上实现某种形式的安全性,更具体地说,重要的是加密数据以便(例如)没有人可以查看通过网络传输的数据。 / p>

我不认为Windows身份验证是合适的,因为最终用户可能无法严格维护其Windows登录和角色以将其用作身份验证。我认为这会使它不恰当吗?如果我错了,请纠正我。

我的问题是,使用netTcpBinding在WCF服务中实现加密的最简单方法是什么?特别是当Windows凭证类型不可用时。

我尝试过使用证书进行试验(使用makecert生成我自己的证书),但是明显缺乏教程和文档,描述了如何使用TCP从头到尾完成此操作并在IIS之外的其他东西中托管服务。他们中的很多人都会详细介绍如何生成证书(这些教程中没有两个在这方面完全相同)并通过说出像

这样的内容来完成
  

使用这些来签署服务和客户端

......很遗憾,这是我需要进一步澄清的过程!

一般来说,证书解决方案似乎超过了顶层而且只是为了实现加密数据而有点过分!

在我可能做出的任何假设中的任何帮助或更正都将非常感激。

1 个答案:

答案 0 :(得分:2)

在评论中讨论后......

根据我的经验(我已经完成了大量的序列化/ WCF工作)NetTcpBinding(和NetDataContractSerializer)的性能“好处”在很大程度上是神话般的。我从未见过 重要的 差异 - 而且通常vanilla http绑定更快。

我会通过SSL切换到BasicHttpBinding,这对于设置来说是微不足道的并且是安全的。

如果你想要改进性能等,我会将序列化器切换到protobuf-net之类的东西(披露:我是作者)。这个 很容易证明性能优势,并且可以很好地在WCF内部(只是对配置文件的更改), 特别是 而不是BasicHttpBinding(带有如果您启用MTOM消息编码,则额外提升,因为它是二进制格式。)

就个人而言,我从不使用NetTcpBinding;如上所述,性能是值得怀疑的,如果您发现需要WAN访问,它会让您依赖于在basic-http中无效的内容。