【发布时间】:2015-12-15 12:10:45
【问题描述】:
我使用 WS-Security 向外部 Web 服务发出请求。形成 SoapUI 一切正常。在 .Net (C#) 中没有。
我发现请求的不同之处在于Security header中Type属性的命名空间。
来自soapUI的标题包含:
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<o:UsernameToken u:Id="uuid-90bae2a1-88a9-4b4c-b84e-9244d3576051-7">
<o:Username>******</o:Username>
<o:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">******</o:Password>
</o:UsernameToken>
</o:Security>
来自 .net (C#) 的 xml 是这样的:
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<o:UsernameToken u:Id="uuid-90bae2a1-88a9-4b4c-b84e-9244d3576051-7">
<o:Username>******</o:Username>
<o:Password o:Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">******</o:Password>
</o:UsernameToken>
</o:Security>
问题是服务器不接受密码元素的 Type 属性中的 o:。
首先:服务器是否应该接受Type属性中的o:?
第二个(也是更重要的):有没有办法从 Type 属性中删除 o:,因为我无法控制 Web 服务?
在 C# 中,我使用带有 TransportWithMessageCredential 安全模式的 basicHttpBinding。
【问题讨论】:
标签: c# xml web-services soap ws-security