使用svcutil导入wsdl会导致安全配置失败

时间:2014-07-10 16:33:51

标签: wcf wsdl ws-security svcutil.exe wse

我尝试访问使用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进行交互。

任何建议表示赞赏,谢谢。

2 个答案:

答案 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