syndesisio / syndesis

A flexible, customizable, open source platform that provides core integration capabilities as a service.
https://syndesis.io/
Apache License 2.0
592 stars 205 forks source link

SOAP client support #6504

Open hodrigohamalho opened 4 years ago

hodrigohamalho commented 4 years ago

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.

KurtStam commented 4 years ago

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)

gaughan commented 4 years ago

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

hodrigohamalho commented 4 years ago

Hi @KurtStam,

  1. No
  2. 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).
  3. Nice to be but not a must right now.

I can contribute but not lead this extension.

christophd commented 4 years ago

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.

KurtStam commented 4 years ago

@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 commented 4 years ago

@hodrigohamalho

I can contribute but not lead this extension.

Cool - we divi up the tasks once we identify them

gaughan commented 4 years ago

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

zregvart commented 4 years ago

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.

gaughan commented 4 years ago

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

heiko-braun commented 4 years ago

@hodrigohamalho What use cases do you have in mind?

dhirajsb commented 4 years ago

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

hodrigohamalho commented 4 years ago

@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.

tdiesler commented 4 years ago

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

KurtStam commented 4 years ago

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 commented 4 years ago

@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?

dhirajsb commented 4 years ago

@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?

zregvart commented 4 years ago

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.

valdar commented 4 years ago

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

dhirajsb commented 4 years ago

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.

zregvart commented 4 years ago

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.

stale[bot] commented 4 years ago

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!

dhirajsb commented 4 years ago

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

stale[bot] commented 4 years ago

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!

raraujo-dev commented 4 years ago

Hi everybody.

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