来自cxf的wse3 PasswordDigest身份验证

时间:2012-07-02 11:49:12

标签: .net soap cxf ws-security wse

我正在扩展旧的.NET ASP应用程序(无法升级)。它将有一个SOAP Web服务,将从CXF(java)调用。我已经在.NET端安装并配置了WSE3扩展,现在我可以使用soap ui从ASP世界之外调用我的简单服务。一切似乎都运行正常 - 我可以阻止某些用户使用用户名和明文密码进行身份验证的访问权限。但是,当我在soap-ui中将WSS-Passoword-Type设置为“PasswordDigest”时,我收到以下消息:

  

安全令牌无法通过身份验证或授权--->   WSE562:传入的用户名令牌包含密码哈希。该   内置的UsernameTokenManager不支持这种类型   用户名令牌。有关详细信息,请参阅文档   UsernameTokenManager.AuthenticateToken方法

此服务将由ESB从外部调用 - 因此我没有太多选择选择身份验证方案。我需要该服务来支持“PasswordDigest”。 有没有办法实现它?

我知道我可以实现一个自定义UsernameTokenManager - 但它必须返回用户密码,而它只获得散列值。它对我没有帮助。

以下是我正在提出的要求:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/" xmlns:wsa="http://www.w3.org/2005/08/addressing">
   <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" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
         <wsse:UsernameToken wsu:Id="UsernameToken-22">
            <wsse:Username>user</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">xHxNY51954nB9l3ulEp8fRX8HdE=</wsse:Password>
            <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">TEU+Z/yfS0oDTOxMZG+AXA==</wsse:Nonce>
            <wsu:Created>2012-07-02T11:39:17.695Z</wsu:Created>
         </wsse:UsernameToken>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <tem:HelloWorld/>
   </soap:Body>
</soap:Envelope>

0 个答案:

没有答案