1

使用 Synapse 2.1,我正在尝试将没有标头的 XML 消息转换为带有包含凭据的标头的 SOAP 消息,以使用 Web 服务。像这样的东西:

突触传入消息:

<SOAP-ENV:Envelope>
<SOAP-ENV:Body>
   ...TAGS...
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

突触传出消息:

<SOAP-ENV:Envelope>
<SOAP-ENV:Header>
   <yta:Authentication>
      <yta:UserName>srnm</yta:UserName>
      <yta:Password>psswrd</yta:Password>
   </yta:Authentication>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
   ...TAGS...
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我如何配置 Synapse 来做到这一点?我成功地使用转换文件来更新消息的正文,但没有在输出中添加标题。

我尝试在配置文件中使用标头和属性中介,但我不确定该怎么做。阅读有关标头调解器的信息,它说“目前设置标头仅支持简单的值标头”。会是这样吗?

谢谢

4

3 回答 3

3

作为记录,我最终使用 addHeader 方法在配置文件中使用了带有内联 JavaScript 脚本的脚本中介。见下文:

<script language="js">
   <![CDATA[
     var user = mc.getPayloadXML()..*::UserName.toString();
     var psswd = mc.getPayloadXML()..*::Password.toString();
     mc.addHeader(false, <yta:Authentication xmlns:yta="yta:namespace url"><yta:UserName>{user}</yta:UserName><yta:Password>{psswd}</yta:Password></yta:Authentication>);
   ]]>
</script>
于 2013-04-01T22:00:57.417 回答
0

您可以使用 XSLT 中介来操作它。所以添加一个带有所需标头的 XSLT 转换,它会添加所需的标头。或者使用脚本调解器/类调解器,您可以在其中操作消息。

请参考以下内容,这将是有用的。

http://wso2.org/forum/thread/10794

http://wso2.org/forum/thread/10843

如果不需要这个 xml 结构。您可以使用 Http Headers 您可以使用如下属性。 http://blog.thilinamb.com/2011/04/how-to-access-web-service-using-http.html

于 2013-03-28T22:45:44.697 回答
0

看起来你想保护服务。最简单的方法是使用用户名令牌安全性。转到 WSO2 ESB 中的服务仪表板以获取您的代理服务并使用 UT 保护它。另请参阅http://docs.wso2.org/wiki/display/ESB460/Sample+200%3A+Using+WS-Security+with+policy+attachments+for+proxy+services以获取安全示例

于 2013-03-29T01:42:03.900 回答