bean

Version

"bean" should be used for Kubernetes only. Experimental.

Child Elements

ElementDescriptionCardinality
abortInterceptors are usually applied to requests and responses. In case of errors, interceptors can initiate the abort flow to safely shut down Membrane. By nesting interceptors into an Element you can limit their application to abort flows only.0..1
accessControlBlocks requests whose origin TCP/IP address (hostname or IP address) is not allowed to access the requested resource.0..1
accessLogWrites exchange metrics into a Log4j appender0..1
accountBlockerKeeps track of blocked user accounts (accounts become blocked after too many failed logins).0..1
accountRegistrationAllows account registration (!Experimental!)0..1
acmeConfigures an ACME (RFC 8555) client, e.g. to retrieve TLS certificates from Let's Encrypt.0..1
acmeHttpChallengeSee the documentation of the <acme /> element for usage details.0..1
addHeader0..1
additionalVariable0..1
adminConsoleDisplays up-to-date statistics, recent exchanges and, by default, allows live modification of Membrane's configuration.0..1
apiThe api proxy extends the serviceProxy with API related functions like OpenAPI support.0..1
apiKeySecures APIs by validating keys stored in either files or proxies.xml. Keys can be received from clients via HTTP headers or URL query parameters. Additional permission checks are possible through scope validation - scopes are loaded into an Exchange property and can be checked using the "hasScope()" SpEL function.0..1
attribute0..1
authentication0..1
azureDns0..1
azureTableStorage0..1
balancerPerforms load-balancing between several nodes. Nodes sharing session state may be bundled into a cluster.0..1
basicAuthenticationBlocks requests which do not have the correct RFC 1945 basic authentication credentials (HTTP header "Authentication: Basic ....").0..1
bean"bean" should be used for Kubernetes only. Experimental.0..1
beautifierBeautifies request and response bodies. Supported are the Formats: JSON, XML0..1
cacheDon't use, this does NOT implement valid HTTP caching.0..1
cachingUserDataProviderCaching User Data provider caches previous successful logins in order to make authentication faster0..1
case0..1
claim0..1
clamavDelegates virus checks to an external Virus Scanner.0..1
client0..1
cluster0..1
clusterNotificationReceives control messages to dynamically modify the configuration of a {@link LoadBalancingInterceptor}.0..1
clusters0..1
connection0..1
description0..1
dispatchingThis interceptor adds the destination specified in the target element to the list of destinations of the exchange object. It must be placed into the transport to make Service Proxies Work properly. It has to be placed after the ruleMatching interceptor. The ruleMatching interceptor looks up a service proxy for an incoming request and places it into the exchange object. The dispatching interceptor needs the service proxy to get information about the target.0..1
dnsOperator0..1
elasticSearchExchangeStoreUsed for storing exchanges in the Elasticsearch.0..1
emailTokenProviderThe emailTokenProvider randomly generates a 6-digit token after the user entered her correct password.0..1
emptyTokenProvider0..1
exchangeStoreAdds the current state of HTTP requests and responses to an "exchange store".0..1
excludeContains a Java regex for excluding message headers.0..1
faultMonitoringStrategyMonitors the outcome of requests to each node to quickly disable/re-enable faulty ones.0..1
field0..1
fileStorage0..1
fileUserDataProviderA user data provider utilizing htpasswd formatted files.0..1
formValidationUsing the formValidation interceptor you can validate the input of HTML forms.0..1
gatekeeper0..1
github0..1
google0..1
graphQLProtectionCheck GraphQL-over-HTTP requests, enforcing several limits and/or restrictions. This effectively helps to reduce the attack surface.0..1
greaseJson0..1
groovyExecutes a Groovy script. The script can access and manipulate data from the request and response. Use this or the Javascript plugin to extend the functions of Membrane by scripting. See: example/groovy for working samples0..1
groovyTemplateUses the groovy template markup engine to produce HTML-based responses. <groovyTemplate><![CDATA[ html { head { title('Resource') } body { p('Hello from Membrane!') } } ]]></groovyTemplate>0..1
header0..1
headerExtractor0..1
headerFilterRemoves message headers matching a list of patterns. The first matching child element will be acted upon by the filter.0..1
headerRetriever0..1
httpClientThe httpClient sends the request of an exchange to a Web Server using the HTTP protocol. Usually it will be globally used inside the transport. However, it is also possible to use it inside a proxy to give the proxy an individual configuration for its outgoing HTTP connection that is different from the global configuration in the transport.0..1
ifThe "if" interceptor supports conditional execution of a group of executors.0..1
includeContains a Java regex for including message headers.0..1
indexThe index feature lists available proxys at a simple Web page. To use this feature just add a serviceProxy containing the index element. Of course you can protect the service proxy by using SSL or Username and Password.0..1
inMemorySessionManager0..1
javascriptExecutes a Javascript. The script can access and manipulate data from the request and response. Use this or the Groovy plugin to extend the functions of Membrane by scripting. See the samples in examples/javascript.0..1
jSessionIdExtractorThe jSessionIdExtractor extracts the JSESSIONID from a message and provides it to the {@link Balancer}.0..1
json2XmlIf enabled converts body content from json to xml.0..1
jsonPointerExtractorBased on JSON pointer. The interceptor takes values from JSON request body and puts them into Exchange object as properties. If the pointer is not found, an exception will be thrown (resulting in {@link Outcome#ABORT}).0..1
jwk0..1
jwk0..1
jwk0..1
jwk0..1
jwtSessionManager0..1
keyExperimental.0..1
keyFileStoreLoads api keys from a file. File has to be one key per line, blank lines for formatting are allowed. Optionally, a comma separated list of scopes after the key and a colon in between the two. Hash symbol can be used for comments at the end of each line, including empty lines.0..1
keyGeneratorExperimental.0..1
keysStores api keys inline as XML.0..1
kubernetesStorage0..1
kubernetesValidationKubernetes Integration is still experimental.0..1
ldapUserDataProviderA user data provider querying an LDAP server to authorize users and retrieve attributes.0..1
limitLimits the maximum length of a HTTP message body.0..1
limitedMemoryExchangeStoreStores exchange objects in-memory until a memory threshold is reached. When the threshold is reached and new exchanges arrive then old exchanges will be dropped (starting from oldest ascending) until the exchange can be stored. The LimitedMemoryExchangeStore is the default ExchangeStore Membrane uses.0..1
logThe log feature logs request and response messages to the log4j framework. The messages will appear either on the console or in a log file depending on the configuration of the conf/log4j2.xml file.0..1
loginThe login interceptor can be used to restrict and secure end user access to an arbitrary web application.0..1
map0..1
map0..1
mapping0..1
memoryExchangeStoreStores all exchanges in-memory. The Java heap will overflow if this store is used to store too many Exchanges. Use for Membrane Monitor only.0..1
memoryStorageFor testing purposes only.0..1
node0..1
oauth2ResourceAllows only authorized HTTP requests to pass through. Unauthorized requests get a redirect to the authorization server as response.0..1
oauth2Resource2Allows only authorized HTTP requests to pass through. Unauthorized requests get a redirect to the authorization server as response.0..1
openapiReads an OpenAPI description and deploys an API with the information of it.0..1
otlpExporter0..1
pathExplanation:0..1
property0..1
property0..1
proxy0..1
proxyClients can send HTTP requests to a proxy that forward the request to a Web server. It acts onbehalf of the client.0..1
queryParamExtractor0..1
rateLimiterThe rateLimiter plugin limits the number of requests of a client in a period of time. As a default the client requests are grouped by client-Ip address and then counted. There are lots of possibilities to group the requests using the keyExpression. The requests can even be counted from different clients together.0..1
redisOriginalExchangeStoreUsed for storing exchanges temporarily in Redis. Supports authentication with or without password and username0..1
regExReplacerRuns a regular-expression-replacement on either the message body (default) or all header values.0..1
requestInterceptors are usually applied to requests and responses. By nesting interceptors into a Element you can limit their application to requests only.0..1
responseInterceptors are usually applied to requests and responses. By nesting interceptors into a Element you can limit their application to responses only.0..1
rest2SoapConverts REST requests into SOAP messages.0..1
returnTerminates the exchange flow. The returned response is determined in the following order:0..1
reverseProxyingRewrites the scheme, hostname and port in the "Location" header in HTTP responses, as well as in the "Destination" header in HTTP requests. The rewriting reflects the different schemes, hostnames and ports used to access Membrane vs. the target HTTP server.0..1
rewrite0..1
rewriterRewrites or redirects the path of incoming requests based on a mapping.0..1
routerMembrane API Gateway's main object.0..1
routerIpResolver0..1
scopeContains a scope for use in ... elements.0..1
scope0..1
secretContains api keys and scopes.0..1
serviceProxyA service proxy can be deployed on front of a Web server, Web Service or a REST resource. It conceals the server and offers the same interface as the target server to its clients.0..1
sessionManagerExplanation:0..1
shutdownShutdown interceptor.0..1
soap2RestConverts SOAP messages into REST requests.0..1
soapProxyA SOAP proxy can be deployed on front of a SOAP Web Service. It conceals the server and offers the same interface as the target server to its clients.0..1
soapStackTraceFilterThe soapStackTraceFilter removes SOAP stack traces from message bodies.0..1
spdyAllow HTTP protocol upgrades to the SPDY protocol. After the upgrade, the connection's data packets are simply forwarded and not inspected.0..1
sslConfigures inbound or outbound SSL connections.0..1
staticUserDataProviderA user data provider listing all user data in-place in the config file.0..1
statisticsCSVWrites statistics (time, status code, hostname, URI, etc.) about exchanges passing through into a CSV file (one line per exchange).0..1
statisticsJDBCWrites statistics (time, status code, hostname, URI, etc.) about exchanges passing through into a database (one row per exchange).0..1
stompProxyProxies incoming STOMP CONNECT requests. Use a <stompClient> to forward these requests so some other machine.0..1
swaggerProxyA service proxy that handles Swagger REST API calls. It includes a SwaggerRewriterInterceptor ex factory.0..1
swaggerRewriterAllow Swagger proxying0..1
switchChanges an exchange's target based on a series of XPath expressions.0..1
target0..1
targetThe destination where the service proxy will send messages to. Use the target element, if you want to send the messages to a static target. If you want to use dynamic destinations have a look at the content based router.0..1
tcpAllow HTTP protocol upgrades to the TCP protocol. After the upgrade, the connection's data packets are simply forwarded and not inspected.0..1
telekomSMSTokenProviderThe telekomSMSTokenProvider randomly generates a 6-digit token after the user entered her correct password.0..1
templateRenders the body content of a message from a template. The template can produce plain text, Json or XML. Variables in the template are substituted with values from the body, header, query parameters, etc. If the extension of a referenced template file is .xml it will use XMLTemplateEngine otherwise StreamingTemplateEngine. Have a look at the samples in examples/template.0..1
throttleThe throttle feature can slow down traffic to thwart denial of service attacks.0..1
totpTokenProviderA token provider using the Time-based One-time Password (TOTP) algorithm specified in RFC 6238 to verify tokens using a pre-shared secret.0..1
transformThe transform feature applies an XSLT transformation to the content in the body of a message. After the transformation the body content is replaced with the result of the transformation.0..1
transportThe transport receives messages from clients and invokes interceptors in the request and response flow. The interceptors that are engaged with the transport are global and are invoked for each message flowing through the router.0..1
trustAllows to insert one or more PEM blocks containing the certificates to be trusted directly into the proxies.xml file.0..1
unifyingUserDataProviderExplanation:0..1
urlNormalizerReplaces "/./" in the request URI's path by "/".0..1
user0..1
userInfo0..1
webServerServes static files based on the request's path.0..1
webSocketAllow HTTP protocol upgrades to the WebSocket protocol. After the upgrade, the connection's data packets are simply forwarded and not inspected.0..1
whateverMobileSMSTokenProviderThe whateverMobileSMSTokenProvider randomly generates a 6-digit token after the user entered her correct password.0..1
wsdlPublisherThe wsdlPublisher can be used to serve WSDL files (and attached XML Schema Documents), if your backend service does not already do so.0..1
wsdlRewriterThe wsdlRewriter rewrites endpoint addresses of services and XML Schema locations in WSDL documents.0..1
xml2JsonIf enabled converts body content from xml to json.0..1
xmlContentFilterThe xmlContentFilter removes certain XML elements from message bodies. The elements are described using an XPath expression.0..1
xmlProtectionProhibits XML documents to be passed through that look like XML attacks on older parsers. Too many attributes, too long element names are such indications. DTD definitions will simply be removed.0..1
xmlSessionIdExtractorExtracts a session ID from an XML HTTP request body based on the qualified name of an XML element.0..1
xpathExtractorBased on xpath it takes values from xml in request and puts them in exchange as properties0..1

Can be used in