我尝试访问使用ws-security(wsse)的java-webservice。我尝试使用svcutil:
来使用它svcutil *.wsdl *.xsd /language:C# /tcv:Version35
这很有效,但是在wsdl-file
中导入此块时出错<wsp:Policy wsu:Id="myServiceRequestResponseSoapBindingPolicy" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsp:ExactlyOne>
<wsp:All>
<sp:SupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken11/>
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SupportingTokens>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
说
An unsupported security policy assertion was detected
所以这会被忽略。
如您所料,与服务进行通信会返回错误消息“未授权”。我从Web服务所有者那里得到的信息指出我的消息不包含WSSecurity-part。
我找到了这个帖子svcutil getting stuck on usernameToken Policy,但政策似乎有所不同,因为我没有任何证书。所以我在这条道路上无处可去。
我安装了WSE3因为我有一些印象我需要它的东西,但我现在很不确定是否是这种情况以及这需要如何与我的wcf-client进行交互。
任何建议表示赞赏,谢谢。
答案 0 :(得分:0)
不要担心这个警告,WSDL部分不相关(你甚至可以删除它)。您应该拥有的是来自wroking客户端(例如Java)或来自供应商样本的工作SOAP请求的示例,其中包含安全性。然后,您可以配置绑定以支持它。仅从您发布的WSDL部分开始,您可能希望尝试使用TransportWithMessageCredential安全模式的basicHttpBinding。
答案 1 :(得分:0)
谷歌搜索wcf和usernametoken让我得到了这个解决方案 - 如果你得到正确的搜索词,那就太容易了......
http://weblog.west-wind.com/posts/2012/Nov/24/WCF-WSSecurity-and-WSE-Nonce-Authentication