如何在wso2esb中编写自定义策略以获取简单的用户名和;密码

时间:2014-06-03 12:33:20

标签: wso2 wso2esb ws-security wso2carbon

我希望写自定义政策。我会如何开始。 我无法找到任何关于此的博客。 我的问题是我的客户端已经修复了头认证请求。所以Username-token认证场景对我来说是完美的。但是客户端无法按照所需的场景发送正确的格式请求。 它以其他格式发送用户名密码

<soapenv:Header>
          <pr:authentication soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:pr="http://webservices.im.com/ProxyService">
             <pr:user>mwp</pr:user>
             <pr:password>MWp003</pr:password>
          </pr:authentication>
       </soapenv:Header>

但它不能在wso2 ESB用户名 - 令牌场景中工作。期望输入标头就像这样

<soapenv:Header>
      <wsse:Security 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" soapenv:mustUnderstand="1">
         <wsu:Timestamp wsu:Id="TS-4">
            <wsu:Created>2014-06-02T07:15:21Z</wsu:Created>
            <wsu:Expires>2014-06-02T08:38:41Z</wsu:Expires>
         </wsu:Timestamp>
         <wsse:UsernameToken wsu:Id="UsernameToken-3">
            <wsse:Username>admin</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">admin</wsse:Password>
            <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">byWKVY4stEATvTqaoNMswQ==</wsse:Nonce>
            <wsu:Created>2014-06-02T07:15:21.304Z</wsu:Created>
         </wsse:UsernameToken>
      </wsse: >
   </soapenv:Header

那么解决这个问题的方法是什么呢? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

ESB使用WS-Security规范来保护Web服务。因此,客户端需要根据该规范发送消息。但在您的情况下,似乎您的客户端在自定义SOAP标头中发送用户/密码。然后ESB无法验证这些。可以有两种解决方案。

  1. 您需要修改您的客户端以符合WS-Security规范。

  2. 您可以编写一些自定义处理程序(axis2处理程序)来读取邮件中的自定义标题,并根据用户存储验证用户/密码。
    基本上,WS-Security消息也由名为Apache Rampart的axis2处理程序验证。