0

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

阅读这篇非常有用的博客文章说,使用内置身份验证点需要端点使用wsHttp绑定。

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

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

所以,问题:

  1. 绑定是否wsHttp仍允许原始 XML 输入?
  2. 如果没有,我会更明智
    • 实施两个单独的身份验证点?一个用于原始 XML 输入,一个用于加密输入 或者
    • 允许来自wsHttp的输入依赖于将与原始 XML 输入共享的某些方法内验证?
  3. 允许用户在原始 XML 请求中传递他们的凭据是否明智?

编辑:听起来我在原始帖子中误解或误解了某些内容,所以在这里我将澄清我所说的“原始 XML”是什么意思。

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

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

4

1 回答 1

0

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

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

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

于 2011-07-29T01:17:29.163 回答