Wcf Web服务客户端需要向密码安全标头添加类型属性

Wcf Web服务客户端需要向密码安全标头添加类型属性,wcf,soap,ws-security,usernametoken,Wcf,Soap,Ws Security,Usernametoken,我正在编写一个.NET客户端WCF,它将使用一个使用ApacheCXFJava实现的web服务,令人惊讶的是,要让WCF将Password标记的Type属性设置为PasswordText非常困难。也就是说,我希望SOAP头看起来像: <wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-

我正在编写一个.NET客户端WCF,它将使用一个使用ApacheCXFJava实现的web服务,令人惊讶的是,要让WCF将Password标记的Type属性设置为PasswordText非常困难。也就是说,我希望SOAP头看起来像:

  <wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
     <wsse:UsernameToken wsu:Id="UsernameToken-11" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <wsse:Username>test</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">a287645857cfaaddf82e2d333651b3e0</wsse:Password>
        <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">oKGlwEkbkhYJH6upsbiqeQ==</wsse:Nonce>
        <wsu:Created>2011-10-25T13:10:11.958Z</wsu:Created>
     </wsse:UsernameToken>
  </wsse:Security>
但实际的标题如下所示:

  <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-5acb0b47-1b52-4535-bfaf-b9e76621b7eb-1">
        <o:Username>test</o:Username>
        <o:Password>a287645857cfaaddf82e2d333651b3e0</o:Password>
     </o:UsernameToken>
  </o:Security>
正如您所看到的,密码标记中缺少Type属性。网络上的一些研究似乎表明,我可能需要编写一个拦截器来解决这个问题。我想有一个简单的解决方案,即配置设置,来解决这个问题,但可能没有。无论如何,我希望通过发布这个问题得到一些澄清

WS-server拒绝该请求,因为缺少类型属性。某些函数检查是否符合BSP规范。不确定这是什么会引发异常


在这方面,Ola

好的,实现需要使用WSE 2.0 SP3。注意不要使用WSE 3.0

WCF帮不了你

你所需要的就是


是一个更好的例子。

-1:你到底为什么要推荐这样过时的软件。你的否决票太荒谬了。您并没有说它是错误的,只是说它是一个旧软件-是的,因为OASIS2004是OBSELETE,所以您必须使用OBSELETE工具来使用它。它是唯一一个支持它的。不要投反对票,相反的建议。您对OASIS2004一无所知,是吗?建议删除生产中需要过时软件的应用程序。这将是一个非常重要的应用程序,需要在生产中使用过时的软件。它不是旧的,它是过时的和不受支持的。再次,确保没有人认为这是一个好主意。对于这个特定的人来说,这可能是一个必要的想法,但绝对不是一个好主意。你是如何创建客户的?添加服务引用是否还需要Nonce和Created?WCF用户名令牌配置文件实现没有提供它们,因此它会导致自定义令牌或自定义消息头。是的,使用添加服务引用创建,然后对配置文件进行一些调整。