2011-07-28 188 views
0

我正在构建WCF SOAP服务。当然,我会在服务上需要一些认证。WCF服务身份验证方法

读取此very helpful blog post表示要使用内置身份验证点要求终端使用绑定wsHttp

如果我可以保证用户可以通过基于WCF公开的元数据(基本上就是用C#编写的客户端,带有Web服务引用的客户端)通过客户端与服务进行通信,那就没有问题。不过,我不能保证这一点!

我仍然需要允许用户使用原始(未加密的)XML进行通信。

所以,问题:

  1. 是否wsHttp绑定仍允许原始XML输入?
  2. 如果不是,我会更聪明地去
    • 实施两个单独的认证点?一个用于原始XML输入,另一个用于加密输入 或
    • 允许来自wsHttp的输入回退一些将与原始XML输入共享的方法验证?
  3. 允许用户在原始XML请求中传递凭据是明智吗?

编辑:这听起来像我miscommunicated或误解在原来的职位的东西,所以在这里我将澄清我所说的“原始XML”的意思。

通过原始XML,我的意思只是SOAP数据包和附带的HTTP头 - 我可能会从soapUI或Fiddler发送。据我了解,当从WSDL生成客户端(例如,在C#中)时,通过wsHttp绑定的消息被加密。

如果情况并非如此,那么我会如何将相同类型的证书附加到原始XML(因为需要更好的术语)请求,因为我通过客户端运行请求?它们是否作为HTTP头附加? SOAP信封中的XML元素?

回答

0

wsHttp是一个SOAP绑定,这意味着您的内容被包装在一个SOAP信封中,可能包含与该信息相关的标题以及正在使用的各种WS- *规范。

我会问你为什么需要支持原始XML?今天的大多数平台都支持SOAP消息传递,而SOAP的整体思想是提供不同平台之间的互操作性。在大多数平台上,开发SOAP客户端与原始XML客户端一样简单。在大多数情况下,仅仅是采用WSDL并生成客户端的情况。如果你想使用标准设施如认证和信息加密,那么这是一个更好的方法。

目前还没有挂钩可以对原始XML进行可互操作的身份验证。你将不得不提出自己的机制来做到这一点,这将是非标准的。对于您的Web服务用户,这意味着它可能需要比开发SOAP更多的开发工作。

+0

谢谢。这听起来像是我在这里误传或误解了一些东西。我会编辑我原来的帖子来尝试澄清 – AndyBursh