我们真的被困在这里所以我决定寻求你的帮助。
昨天,我被要求帮助使用 Web 服务、获取 WSDL 的 URL 以及要使用的用户凭据。
我从未真正与 Web 服务有任何关系,但对它们有一个总体了解并看到了一些示例,我认为它不会那么糟糕。显然我错了,因为我现在被困住了。
一切似乎都很好,代理类(或客户端)已经生成,除了身份验证部分之外,构建请求并发送它们也很好。我们似乎不知道该怎么做。
使用:
client.ChannelFactory.Credentials.UserName.UserName = "myusername";
client.ChannelFactory.Credentials.UserName.Password = "mypassword";
似乎不起作用。 (当我检查 client.Endpoint.Binding.CreateBindingElements() 返回的 BindingElementCollection 时,没有 SecurityBindingElement)
我已经尝试了很多其他方法,但我认为我错过了一些基本的东西,而且缺乏文档也没有真正的帮助。
所以问题是:使用 WCF 调用 Web 服务时如何发送用户名和密码?
Edit:澄清一下,请求应包含与此类似的内容:
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-25763165">
<wsse:Username>username</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">1DiaGTkOLk/CZhDaEpbkAaKRfGw=</wsse:Password>
<wsse:Nonce>6ApOnLn5Aq9KSH46pzzcZA==</wsse:Nonce>
<wsu:Created>2009-05-13T18:59:23.309Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
我有同样的问题。我使用的不是自定义令牌序列化器MessageInspector
添加正确的UsernameToken
in the BeforeSendRequest
方法。然后我使用自定义行为来应用修复。
整个过程都有记录(带有演示项目 http://www.box.net/shared/lu3q83l6kr)在我的博客文章中在 WCF 客户端代理中支持 WS-I 基本配置文件密码摘要 http://blog.benpowell.co.uk/2010/11/supporting-ws-i-basic-profile-password.html。或者,您也可以阅读PDF http://www.box.net/shared/ooom8db1i0.
如果您想跟踪我的解决方案进展,您可以在 StackOverflow 上找到它,标题为“WCF 客户端使用 WS-Security UsernameToken PasswordDigest 身份验证方案使用 Axis 2 Web 服务时出错 https://stackoverflow.com/questions/3102693/error-in-wcf-client-consuming-axis-2-web-service-with-ws-security-usernametoken-p":
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)