WCF net.tcp绑定,消息格式和安全问题

时间:2010-03-14 09:59:24

标签: wcf authentication authorization binding net.tcp

抱歉这些愚蠢的问题,但是有一些关于WCF的事情我无法理解。对于下面的一些建议会很高兴....

  • 在非常基本的层面上,WCF使用二进制(Net.Tcp),HTTP或MSMQ在线路上传输我的消息是正确的吗?

  • 但是,在所有情况下,无论数据是如何传输的,消息本身都是以SOAP格式传输的,包含标题和正文?所以它是一种以HTTP / S或二进制格式传输的XML消息。

  • Net.Tcp对我的客户端服务器应用程序来说是一个不错的选择 - 它类似于一个信使应用程序,因为客户端都是防火墙另一端的远程用户到我的服务器。我正在阅读的大多数内容都告诉我们使用WS *和HTTP。

  • Net.Tcp是否按标准保护并且没有证书? - 也就是说 - 人们无法通过电线收听并解码往返的数据。

  • 是否可以使用net.tcp发送用户名和密码,而无需安装证书?

  • 如果是这样,我认为我可以将其连接到我的会员提供商,并验证对我的服务合同实施中每种方法的访问权限。

  • 我认为使用用户名和密码安全性,代理服务器会使用用户名和密码进行初始化,并且每次请求都会发送此信息。

  • 然后,我会为每个方法调用调用我的成员资格提供程序,并执行任何操作以获取该方法的授权。

很抱歉转发问题,但很高兴知道我是否正确思考WCF如何运作。

感谢。

2 个答案:

答案 0 :(得分:15)

  

在非常基本的层面上,WCF使用二进制(Net.Tcp),HTTP或MSMQ在线路上传输我的消息是否正确?

您将传输层与序列化机制混淆。 WCF transports选项包括TCP,命名管道,HTTP和MSMQ。 WCF serialisation选项是二进制,Text(包括SOAP,POX和JSON)和MTOM。

  

但是,无论在何种情况下,无论数据如何传输,消息本身都以SOAP格式传输,并带有标题和正文?所以它是一种以HTTP / S或二进制格式传输的XML消息。

没有。 WCF使用Message类作为通信的原子单元。它在结构上类似于SOAP,但它不是像SOAP那样的序列化格式。

  

Net.Tcp对我的客户端服务器应用程序来说是一个不错的选择 - 它类似于Messenger应用程序,因为客户端都是防火墙另一端的远程用户到我的服务器。我正在阅读的大多数内容都告诉我们使用WS *和HTTP。

听起来像TCP不是一个好选择。除非您能够在端口80或443上运行服务器,否则防火墙可能会使TCP变得困难。根据我自己的个人经验,我还建议不要在Internet部署中使用带有TCP绑定的WCF。当TCP连接丢失时,WCF会让你跳过很多圈来捕获并重新建立它。 HTTP绑定更容易管理。

  

Net.Tcp是否按标准保护并且没有证书? - 也就是说 - 人们无法通过电线收听并解码往返的数据。

NetTCP binding is secured by default with TLS

  

是否可以使用net.tcp发送用户名和密码,而无需安装证书?

您可以使用预安装的证书对TCP绑定进行身份验证。您还可以在邮件标题中添加用户名和密码,但这是另一回事。

  

如果是这样,我认为我可以将其连接到我的会员提供商,并验证对我的服务合同实施中每种方法的访问权限。

您可以使用OperationContext提取邮件标头,并提取您喜欢的任何信息,并将其与身份验证提供程序一起使用。

  

我认为使用用户名和密码安全性,代理服务器会使用用户名和密码进行初始化,并且每次请求都会发送此信息。

  

然后将为每个方法调用调用我的成员资格提供程序,并执行任何操作以获取该方法的授权。

听起来你想看看How to: Use the ASP.NET Membership Provider

答案 1 :(得分:3)

除了Sipwiz的优秀答案:

  

然而,无论如何,   无论数据如何   转移消息本身   带标题的SOAP格式和   身体?所以它是一种XML消息   在HTTP / S中传输   或者是二进制格式。

是的 - 几乎。 WCF的大多数绑定都使用SOAP作为它们的格式 - 除了webHttpBinding和相关的东西,如WCF数据服务(以前称为“Astoria”或ADO.NET数据服务),或者WCF RIA服务。他们使用REST方法来传输数据,而与SOAP无关。

有关REST的更多信息,请查看WCF REST Developer Center on MSDN