syndesis icon indicating copy to clipboard operation
syndesis copied to clipboard

SOAP client support

Open hodrigohamalho opened this issue 4 years ago • 24 comments

Update: Getting support from the Product Side: https://issues.jboss.org/browse/ENTESB-12062

This is a Feature Request

Description

I think this is an always expected question in a customer meeting about Integration. "How I can do SOAP to REST using low code Integration?" It would be nice to have this on Syndesis.

hodrigohamalho avatar Sep 04 '19 13:09 hodrigohamalho

Thanks @hodrigohamalho. What would be the 80% use case for SOAP support?

  1. No support and document how to wrap SOAP services like: http://redhatgov.io/workshops/agile_integrations_dev/lab04/
  2. Would it be a SOAP connector so that you call into a SOAP service, and if so what authentication scenarios would we need to support
  3. Do we also need to be able to support exposing as a SOAP service, or could this wait till later.
  4. Support SOAP as a payload in Syndesis and AtlasMap. (This would be a lot more involved..)
  5. ?

Finally, Syndesis support extensions (https://github.com/syndesisio/syndesis-extensions) so I could see the community contribute a soap connector that we could add the project. Would you be interested to help out on this? We can obviously help you with this. Most likely it would use the Camel CXF component (https://camel.apache.org/components/latest/cxf-component.html)

KurtStam avatar Sep 11 '19 08:09 KurtStam

IMHO, Not 0 Yes to 1 Not 2 3 maybe but not in the first version

gaughan avatar Sep 16 '19 21:09 gaughan

Hi @KurtStam, 0. No

  1. Yes, about the authentication I think it could be implemented on-demand, right now the customers that I have been talking isn't using any authentication (internal WS).
  2. Nice to be but not a must right now.

I can contribute but not lead this extension.

hodrigohamalho avatar Sep 16 '19 21:09 hodrigohamalho

If it is just 1. for the moment without any WS specific authentication mechanism I wonder if we could just use the existing Http connector.

SOAP is nothing but Http POST requests with some specific SOAP envelope payload and some SOAP action header eventually. That should be doable with plain Http connector.

christophd avatar Sep 17 '19 08:09 christophd

@christophd I think what we is being asked here something similar as the api-connector, where you give it a openapi document (in this case a soap-schema) like this: https://github.com/syndesisio/syndesis-quickstarts/tree/master/db-2-api-connector

KurtStam avatar Sep 17 '19 10:09 KurtStam

@hodrigohamalho

I can contribute but not lead this extension.

Cool - we divi up the tasks once we identify them

KurtStam avatar Sep 17 '19 11:09 KurtStam

Yes similar to api client connector. Auth should be included.

gaughan avatar Sep 17 '19 13:09 gaughan

So when we say authentication should be included, what do we mean by that? WS-Security support?

I think in the first go we should disregard any security means other than TLS and then see from the feedback what authentication mechanisms are used so we know what to implement.

zregvart avatar Sep 17 '19 14:09 zregvart

WS-Security username and password at a minimum I would think.

gaughan avatar Sep 17 '19 15:09 gaughan

@hodrigohamalho What use cases do you have in mind?

  • Fuse Online SOAP Clients talking to external SOAP endpoints?
  • External SOAP Clients invoking on Fuse Online?

heiko-braun avatar Oct 22 '19 16:10 heiko-braun

@tdiesler built a SOAP to REST bridge a little while ago for Camel. Perhaps we can leverage it here.

dhirajsb avatar Oct 22 '19 16:10 dhirajsb

@heiko-braun Fuse Online SOAP clients talking to external SOAP endpoints.

It's more to build a bridge to legacy systems, enabling new microservices to interact with it via REST/JSON.

Application -- ( REST ) --> Fuse Online -- (SOAP) ---> WS

Usually, people try to do it through the API Management Layer.

hodrigohamalho avatar Oct 22 '19 16:10 hodrigohamalho

It's here https://github.com/jboss-fuse/wsdl2rest

tdiesler avatar Oct 23 '19 08:10 tdiesler

OK so summarize the scope of what we talked about this far:

  1. We would replicate the api-connector functionality such that we have the ability to call into an external SOAP service from Syndesis and we'd be able to consume the response.

  2. We'd support minimal WS-Security with 'username and password'. If possible we should see if this can be managed by leveraging 3Scale. So in Syndesis we not need to support it and 3scale would add the security.

KurtStam avatar Oct 28 '19 14:10 KurtStam

@tdiesler is this a bridge or a endpoint generator? From what I read it takes a WSDL and creates REST endpoint? So it's not really a 'bridge' then?

KurtStam avatar Oct 28 '19 14:10 KurtStam

@KurtStam In the flow diagram that @hodrigohamalho mentioned earlier:

Application -- ( REST ) --> Fuse Online -- (SOAP) ---> WS

The wsdl2rest project could be used to generate a Camel route from the SOAP endpoint's WSDL, which could possibly be packaged in an extension and somehow used in a Fuse Online flow.

Are you looking for tooling on top of that REST endpoint?

dhirajsb avatar Nov 07 '19 19:11 dhirajsb

I think a better solution would be one that we use for REST clients, and that's to create a dynamic client connector for SOAP WS. That way we don't have additional artefacts (extension jar) and we don't have to do any code generation.

zregvart avatar Nov 08 '19 09:11 zregvart

Hello, a bit late to the party probably and more related to have a general SOAP connector for syndesis, I would evaluate the use of Wise jboss project: https://wise.jboss.org/

In their words:

Wise is a Java framework for easily invoking webservices, which can be used as the base for zero-code webservice invocation applications. Wise can be the proper solution when total and effective client/server decoupling through WS is required.

and a more detailed presentation here: http://jbosswise.blogspot.com/2013/10/wise-presentation-at-jbug-milan.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+jbosswise+%28Wise+Invoke+Service+Easily%29

valdar avatar Nov 11 '19 15:11 valdar

If all we need is a dynamic SOAP client connector and we expect the user to create a bridge using Fuse Online one operation at a time, then we could just use Camel CXF component to expose a SOAP endpoint. We don't need to go out of our own product ecosystem.

It would have to be wrapped with a dynamic connector to download and extract metadata (operations and types) from the WSDL to be exposed in Fuse Online.

dhirajsb avatar Nov 11 '19 15:11 dhirajsb

If we're converging on this issue targeting SOAP client support in Syndesis perhaps it would be good that the issue title also reflects that.

zregvart avatar Nov 22 '19 10:11 zregvart

This issue has been automatically marked as stale because it has not had any activity since 90 days. It will be closed if no further activity occurs within 7 days. Thank you for your contributions!

stale[bot] avatar Feb 20 '20 12:02 stale[bot]

Added backend PR https://github.com/syndesisio/syndesis/pull/7694

dhirajsb avatar Feb 21 '20 14:02 dhirajsb

This issue has been automatically marked as stale because it has not had any activity since 90 days. It will be closed if no further activity occurs within 7 days. Thank you for your contributions!

stale[bot] avatar May 22 '20 06:05 stale[bot]

Hi everybody.

Any update on this matter? Is there a SOAP connector in the roadmap?

raraujo-dev avatar Jun 29 '20 01:06 raraujo-dev