我正在构建一个WCF SOAP服务。当然,我需要对服务进行一些身份验证。
阅读此very helpful blog post表示要使用内置身份验证点,要求端点使用wsHttp
绑定。
如果我可以保证用户将基于WCF公开的元数据通过客户端与服务进行通信(基本上类似于用C#编写的带有Web服务引用的客户端),那就没问题了。但是,我无法保证这一点!
我仍然需要允许用户只使用原始(未加密)XML进行通信。
所以,问题:
wsHttp
绑定是否仍允许原始XML输入?wsHttp
的输入回退到将与原始XML输入共享的某些方法内验证?编辑:听起来我在原帖中误传或误解了一些内容,所以在这里我将澄清“raw XML”的含义。
原始XML,我的意思是SOAP数据包和随附的HTTP标头 - 正如我可能从soapUI或Fiddler发送的那样。据我了解,当从WSDL生成客户端时,wsHttp
绑定上的消息会被加密(例如,在C#中)。
如果不是这种情况,那么当我通过客户端运行请求时,我将如何将相同类型的凭证附加到原始XML(因为缺少更好的术语)请求?它们是作为HTTP标头附加的吗? SOAP信封中的XML元素?
答案 0 :(得分:0)
wsHttp是一个SOAP绑定,这意味着您的内容被包装在SOAP信封中,可能包含与消息相关的标头以及正在使用的各种WS- *规范。
我会问为什么你需要支持原始XML?今天的大多数平台都支持SOAP消息传递,SOAP的整体思想是提供不同平台之间的互操作性。在大多数平台上,将SOAP客户端开发为原始XML客户端同样容易。在大多数情况下,它只是采用WSDL并生成客户端的情况。如果您想使用标准设施,如身份验证和邮件加密,那么这是一个更好的方法。
目前没有钩子可以对原始XML进行可互操作的身份验证。你必须提出自己的机制才能做到这一点,这将是非标准的。对于您的Web服务用户而言,这意味着与使用SOAP一样,这可能需要更多的开发工作。