WCF服务身份验证方法

时间:2011-07-28 10:26:58

标签: wcf authentication endpoints

我正在构建一个WCF SOAP服务。当然,我需要对服务进行一些身份验证。

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

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

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

所以,问题:

  1. wsHttp绑定是否仍允许原始XML输入?
  2. 如果没有,我会更明智吗?
    • 实施两个单独的认证点?一个用于原始XML输入,另一个用于加密输入 或者
    • 允许来自wsHttp的输入回退到将与原始XML输入共享的某些方法内验证?
  3. 允许用户在原始XML请求中传递其凭据是否明智?
  4. 编辑:听起来我在原帖中误传或误解了一些内容,所以在这里我将澄清“raw XML”的含义。

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

    如果不是这种情况,那么当我通过客户端运行请求时,我将如何将相同类型的凭证附加到原始XML(因为缺少更好的术语)请求?它们是作为HTTP标头附加的吗? SOAP信封中的XML元素?

1 个答案:

答案 0 :(得分:0)

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

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

目前没有钩子可以对原始XML进行可互操作的身份验证。你必须提出自己的机制才能做到这一点,这将是非标准的。对于您的Web服务用户而言,这意味着与使用SOAP一样,这可能需要更多的开发工作。