首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WSE3.0 (.NET)中将EncodingType属性添加到UsernameToken的Nonce元素

如何在WSE3.0 (.NET)中将EncodingType属性添加到UsernameToken的Nonce元素
EN

Stack Overflow用户
提问于 2011-09-14 23:00:28
回答 2查看 8.2K关注 0票数 6

我正在尝试使用WSE3.0从MVC3 .NET Web应用程序调用Java web服务。

但是,web服务需要UsernameToken的Nonce元素上的"EncodingType“属性。以下是与此Java web服务一起正常工作的SOAP信封示例:

代码语言:javascript
复制
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:v1="http://schema.mydomain.org/sms/v1_0">
   <soap:Header>
     <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 xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
         <wsse:Username>myUsername</wsse:Username>
         <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">myPassword</wsse:Password>
         <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">XQkp6oYc3DRv41cxkSTW8w==</wsse:Nonce>
         <wsu:Created>2011-09-13T20:50:08.355Z</wsu:Created>
       </wsse:UsernameToken>  
    </wsse:Security>
  </soap:Header>
   <soap:Body>
      <v1:ping/>
   </soap:Body>
</soap:Envelope>

以下是VS2010生成的代理生成的SOAP信封(在Fiddler中捕获):

代码语言:javascript
复制
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope">
    <wsse:Security env:mustUnderstand="true">
      <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecurityToken-111f922b-72c1-4057-bce4-f6555552ce6a">
        <wsse:Username>myUsername</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">myPassword</wsse:Password>
        <wsse:Nonce>qYse3Lor9sAJ9pKPefgkKQ==</wsse:Nonce>
        <wsu:Created>2011-09-13T20:50:38Z</wsu:Created>
      </wsse:UsernameToken>
    </wsse:Security>
  </env:Header>
  <soap:Body>
      <v1:ping/>
  </soap:Body>
</soap:Envelope>

如果缺少此属性,此web服务将返回“提供了无效的安全令牌(处理用户名令牌时出错)”。

如何添加EncodingType属性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-15 22:20:30

我找到了一个可以接受的解决方案。

EncodingType标志符合WSSE Username and Token Security Spec 1.1,这是Java Web Service使用的Apache CXF框架版本所要求的规范。.NET不符合该规范。幸运的是,CXF中有一个关闭该需求的标志。我们做到了,现在可以交流了。

票数 2
EN

Stack Overflow用户

发布于 2011-09-29 03:05:30

我发现将端点上的"isBSPCompliant“属性设置为"false”可以解决EncodingType问题。这也是你找到的解决方案吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7418506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档