# service-proxy **Repository Path**: heibaifu/service-proxy ## Basic Information - **Project Name**: service-proxy - **Description**: API gateway for REST and SOAP written in Java. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-01-29 - **Last Updated**: 2022-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Membrane Service Proxy ====================== [![GitHub release](https://img.shields.io/github/release/membrane/service-proxy.svg)](https://github.com/membrane/service-proxy/releases/latest) [![Hex.pm](https://img.shields.io/hexpm/l/plug.svg)](https://raw.githubusercontent.com/membrane/service-proxy/master/distribution/router/LICENSE.txt) Reverse HTTP proxy (framework) written in Java, that can be used * as an API gateway * as a security proxy * for HTTP based integration * as a WebSockets and STOMP router Get Started ----------- Download the [binary](https://github.com/membrane/service-proxy/releases). Unpack. Start `service-proxy.sh` or `service-proxy.bat`. Have a look at the main configuration file `conf/proxies.xml`. Changes to this file are instantly deployed. Run the samples in the examples folder, follow the [REST](https://www.membrane-soa.org/service-proxy-doc/4.4/rest-quickstart.htm) or [SOAP](https://www.membrane-soa.org/service-proxy-doc/4.4/soap-quickstart.htm) tutorials, see the [Documentation](https://www.membrane-soa.org/service-proxy-doc/) or the [FAQ](https://github.com/membrane/service-proxy/wiki/Membrane-Service-Proxy-FAQ). Samples ------- ### REST Routing requests from localhost:80 to localhost:8080 : ```xml ``` Routing only requests with path /foo : ```xml /foo ``` ### SOAP SOAP proxies configure themselves by analysing WSDL: ```xml ``` Add features like logging or XML Schema validation against a WSDL document: ```xml ``` Limit the number of requests in a given time frame: ```xml ``` Rewrite URLs: ```xml ``` Monitor HTTP traffic: ```xml ``` ### Monitoring and manipulation Dynamically manipulate and monitor messages with Groovy and JavaScript (Nashorn): ```xml exc.request.header.add("X-Groovy", "Hello from Groovy") CONTINUE ``` ```xml exc.getRequest().getHeader().add("X-Javascript", "Hello from JavaScript"); CONTINUE; ``` Route and intercept WebSocket traffic: ```xml ``` (_Find an example on [membrane-soa.org](http://www.membrane-soa.org/service-proxy-doc/4.4/websocket-routing-intercepting.htm)_) ### Security Use the widely adopted OAuth2/OpenID Framework to secure endpoints: ```xml def oauth2 = exc.properties.oauth2 exc.request.header.setValue('X-EMAIL',oauth2.userinfo.email) CONTINUE ``` (_Find an example on [membrane-soa.org](http://www.membrane-soa.org/service-proxy-doc/4.4/oauth2-openid.htm)_) Operate your own OAuth2/OpenID AuthorizationServer/Identity Provider: ```xml ``` (_Find an example on [membrane-soa.org](http://www.membrane-soa.org/service-proxy-doc/4.4/oauth2-code-flow-example.htm)_) Secure an endpoint with basic authentication: ```xml ``` Route to SSL/TLS secured endpoints: ```xml ``` Secure endpoints with SSL/TLS: ```xml ``` Limit the number of incoming requests: ```xml ``` ### Clustering Distribute your workload to multiple nodes: ```xml ``` See [configuration reference](https://www.membrane-soa.org/service-proxy-doc/4.4/configuration/reference/) for much more.