如何在 WSO2 ESB 中进行 HTTPS 调用
How to make HTTPS call in WSO2 ESB
我的要求是对外部站点进行安全的 Web 请求调用并处理返回的消息。此外部网站需要进行基本身份验证。我按照此处 https://docs.wso2.com/display/ESB490/Enabling+HTTP+Basic+Authentication+through+a+Proxy+Server.
的建议通过 属性 "Proxy-Authorization" 在我的代理服务中传递了凭据
本文档还建议在 axis2.xml 中配置 http.proxyHost/http.proxyPort。但是,我没有代理服务器。我应该离开这个配置吗?当我按照 localhost:8080 的建议配置 http.proxyHost/http.proxyPort 时,我还在日志文件中看到以下异常。所以我想知道我是否为安全的 Web 服务调用正确配置了 ESB?非常感谢您提供的任何帮助。
TID: [-1234] [] [2016-10-24 13:08:17,471] WARN {org.apache.synapse.FaultHandler} - ERROR_CODE : 0 {org.apache.synapse.FaultHandler}
TID: [-1234] [] [2016-10-24 13:08:17,471] WARN {org.apache.synapse.FaultHandler} - ERROR_MESSAGE : Cache-Control:private,Content-Length:58,Content-Type:text/html,Date:Mon, 24 Oct 2016 18:09:37 GMT,WWW-Authenticate:BASIC Realm=hostname,X-Frame-Options:SAMEORIGIN,<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body/></soapenv:Envelope> Unexpected error sending message back {org.apache.synapse.FaultHandler}
TID: [-1234] [] [2016-10-24 13:08:17,471] WARN {org.apache.synapse.FaultHandler} - ERROR_DETAIL : org.apache.synapse.SynapseException: Cache-Control:private,Content-Length:58,Content-Type:text/html,Date:Mon, 24 Oct 2016 18:09:37 GMT,WWW-Authenticate:BASIC Realm=hostname,X-Frame-Options:SAMEORIGIN,<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body/></soapenv:Envelope> Unexpected error sending message back
at org.apache.synapse.core.axis2.Axis2Sender.handleException(Axis2Sender.java:257)
at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:225)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:531)
at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:118)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:337)
at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:554)
at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:188)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:261)
at org.apache.axis2.transport.base.threads.NativeWorkerPool.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.axis2.AxisFault: Transport out has not been set
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:432)
at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:222)
... 14 more
{org.apache.synapse.FaultHandler}
因为 WSO2 ESB 不在防火墙后面,所以你不需要设置 Proxy-Authorization header.You 可以使用 header 中介来设置授权 header代理服务如下<header name="Authorization" expression="fn:concat('Basic ',base64Encode('<username>:<password>'))" scope="transport"/>
。
请在 documentation and here.
中找到更多详细信息
我的要求是对外部站点进行安全的 Web 请求调用并处理返回的消息。此外部网站需要进行基本身份验证。我按照此处 https://docs.wso2.com/display/ESB490/Enabling+HTTP+Basic+Authentication+through+a+Proxy+Server.
的建议通过 属性 "Proxy-Authorization" 在我的代理服务中传递了凭据本文档还建议在 axis2.xml 中配置 http.proxyHost/http.proxyPort。但是,我没有代理服务器。我应该离开这个配置吗?当我按照 localhost:8080 的建议配置 http.proxyHost/http.proxyPort 时,我还在日志文件中看到以下异常。所以我想知道我是否为安全的 Web 服务调用正确配置了 ESB?非常感谢您提供的任何帮助。
TID: [-1234] [] [2016-10-24 13:08:17,471] WARN {org.apache.synapse.FaultHandler} - ERROR_CODE : 0 {org.apache.synapse.FaultHandler}
TID: [-1234] [] [2016-10-24 13:08:17,471] WARN {org.apache.synapse.FaultHandler} - ERROR_MESSAGE : Cache-Control:private,Content-Length:58,Content-Type:text/html,Date:Mon, 24 Oct 2016 18:09:37 GMT,WWW-Authenticate:BASIC Realm=hostname,X-Frame-Options:SAMEORIGIN,<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body/></soapenv:Envelope> Unexpected error sending message back {org.apache.synapse.FaultHandler}
TID: [-1234] [] [2016-10-24 13:08:17,471] WARN {org.apache.synapse.FaultHandler} - ERROR_DETAIL : org.apache.synapse.SynapseException: Cache-Control:private,Content-Length:58,Content-Type:text/html,Date:Mon, 24 Oct 2016 18:09:37 GMT,WWW-Authenticate:BASIC Realm=hostname,X-Frame-Options:SAMEORIGIN,<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body/></soapenv:Envelope> Unexpected error sending message back
at org.apache.synapse.core.axis2.Axis2Sender.handleException(Axis2Sender.java:257)
at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:225)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:531)
at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:118)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:337)
at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:554)
at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:188)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:261)
at org.apache.axis2.transport.base.threads.NativeWorkerPool.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.axis2.AxisFault: Transport out has not been set
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:432)
at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:222)
... 14 more
{org.apache.synapse.FaultHandler}
因为 WSO2 ESB 不在防火墙后面,所以你不需要设置 Proxy-Authorization header.You 可以使用 header 中介来设置授权 header代理服务如下<header name="Authorization" expression="fn:concat('Basic ',base64Encode('<username>:<password>'))" scope="transport"/>
。
请在 documentation and here.