我正在寻求保护 winforms 应用程序内“自托管”的 wcf 服务。
我已经完成了研究,但我不确定什么“适用于”我正在尝试做的事情。
我对 http 或 tcp 绑定(bind)没有偏好,尽管我认为 tcp 从根本上来说会更快?不管怎样,如果我使用TCP,我还需要设置证书吗?我不想为客户端和服务器创建自签名证书..还是应该?
我的基本概念是:
客户端 <----https/tcp(安全?如何?)----> 用户名/密码 ---><---wcf---><---内部身份验证---> < --多汁的小块-->
我想处理我自己的凭据授权,因为我打算针对 wcf 后面的内部系统进行身份验证...我在这里唯一关心的实际上是如何最好地通过线路“传输”我的身份验证详细信息,并且之后...保持往返消息/数据“安全”
有什么指点吗?
最佳答案
NET.TCP 通常是两者中性能更好的绑定(bind)。 HTTP 的优点在于其纯粹的互操作性。如果您的服务将位于应用程序内部,请使用 NET.TCP。如果您打算将其公开以便其他应用程序可以使用它,请使用 HTTP(或者在我看来更好的是 RESTful Web API 服务)。
假设您使用 NET.TCP,您有多种选择来保护您的服务。这些选择归结为两种主要方法:消息级安全性和传输级安全性。消息级安全性更加劳动密集型,因为它保护每条单独的消息,但如果您通过不安全的 channel 中继消息,则这是必要的。 另一方面,传输级安全性的性能更好,如果您的服务完全是内部的,那么它就会发挥作用,因为它本质上是通过安全通道将消息从 A 点发送到 B 点来工作的。
由于 WCF 安全性相当复杂,可以在 SO 响应中进行讨论,因此我强烈建议您进一步阅读它。以下是一些可帮助您入门的链接:
实现消息级安全性
- http://msdn.microsoft.com/en-us/library/ms733137.aspx
- http://msdn.microsoft.com/en-us/library/ff648863.aspx
实现传输级安全
实现证书
关于.net - WCF 安全性,TCP 还是 http?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16775633/