【问题标题】:WCF service authentication methodWCF服务认证方式
【发布时间】:2011-07-28 10:26:57
【问题描述】:

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

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

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

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

所以,问题:

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

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

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

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

【问题讨论】:

    标签: wcf authentication endpoints


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。听起来我在这里传达错误或误解了某些东西。我将编辑我的原始帖子以尝试澄清
    猜你喜欢
    • 2014-05-11
    • 2012-05-10
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多