WSO2 ESB安全代理:发送到后端的请求已签名

时间:2015-03-19 00:52:17

标签: security proxy wso2 esb

我是wso2 esb的新手。 我正在尝试建立一个安全的代理来保护非安全的Web服务。 我遵循不同的教程,并为我的代理执行以下配置:

`<proxy xmlns="http://ws.apache.org/ns/synapse"
   name="ProxyStockeSecure"
   transports="https,http,local"
   statistics="disable"
   trace="disable"
   startOnLoad="true"><target inSequence="LogAndRemoveHeader" outSequence="LogSeqResponse">
  <endpoint>
     <address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
  </endpoint></target><publishWSDL uri="http://localhost:9000/services/SimpleStockQuoteService?wsdl"/><enableSec/><policy key="sec_policy"/><description/></proxy>

LogAndRemoveHeader序列删除安全标头并记录流程。

<sequence xmlns="http://ws.apache.org/ns/synapse" name="LogAndRemoveHeader"><log level="full"></log><header xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" name="wsse:Security" scope="default" action="remove"></header><log level="full"></log></sequence>

当我向安全代理发送签名请求时,我可以看到代理验证它很好(感谢wallart)。 但是,当我查看后端服务器上的日志时,我发现当我在“LogAndRemoveHeader”序列中删除它时,Security标头仍然存在。

在WSO2服务器中,我可以看到正确删除了安全性:

TID: [0] [ESB] [2015-03-19 01:20:31,508]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  To: /services/ProxyStockeSecure, WSAction: urn:getSimpleQuote, SOAPAction: urn:getSimpleQuote, MessageID: urn:uuid:7d951378-9a98-4b60-bcba-cded778ee977, Direction: request, Envelope: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ser="http://services.samples"><soap:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Id-1150340834">
  <ser:getSimpleQuote>
     <!--Optional:-->
     <ser:symbol>1</ser:symbol>
  </ser:getSimpleQuote></soap:Body></soap:Envelope>

但是,在后端服务器上,安全标头又回来了,我觉得wso2已经重新签名了请求。实际上,DigestValue或SignatureValue与原始请求不同......

1 个答案:

答案 0 :(得分:0)

使用send mediator将您的请求发送到LogAndRemoveHeader序列中的后端服务。以下是示例发送中介代码。

<send>
  <endpoint>
     <address uri="http://localhost:9000/services/SimpleStockQuoteService"></address>
  </endpoint>
</send>