Search code examples
wso2wso2-api-managerapi-manager

WS02 API Manager 2.0


Many third-party services providers allow you to configure a "Webhook" (aka HTTP POST) to your system when an event occurs in their system. Service providers will use various methods of authentication (HMAC, OAuth, TLS, etc.).

For example, Company1 configures ServiceABC to send notification to http://company1.com/eventlistener when an event occurs in the service provider (eg transaction approved):

 ServiceABC.com -> HTTP POST -> http://company1.com/eventlistener

http://company1.com/eventlistener is in the DMZ. It will authenticate the message and forward to back end service as appropriate.

 [DMZ] http://company1.com/eventlistener -> | [Behind] http://backendUrl/service

In this example, assume the service provider does not support OAuth. Authentication is performed using a custom header scheme.

Can/Should the WSO2 API Manager be used in this scenario?

If not the API Manager, can the WSO2 ESB be used ?


Solution

  • API Manager is the right solution here. API Manager has 5 main components, gateway, publisher, store, keymanager and traffic manager. In the basic distributed setup these 5 components can run on 5 machines. API Publisher publishes APIs to gateway (real artifact of API are here) and store (virtual representation of API, to which can be subscribed, are here). Gateway exposes your APIs to outside. So it resides in DMZ. API Store also can be on DMZ depending on what you want. Keymanager handles authentication (eg. OAuth2) and should be in MZ. Traffic manager is used for request throttling.

    Backend authentication can be done with a simple customization.

    You can find clustering documentation here. APIM deployment patterns are here.

    Hope this helps.