Skip to main content

Built-in plugins

Otoroshi next provides some plugins out of the box. Here are the available plugins with their documentation and reference configuration. Click on a plugin card to expand it and see its reference and default configuration.

211 plugins

Remote Catalog Deploy Many

Defined on steps
CallBackend
This plugin deploys entities from multiple remote catalogs

Remote Catalog Deploy Single

Defined on steps
CallBackend
This plugin deploys entities from a single remote catalog

Remote Catalog Deploy Webhook

Defined on steps
CallBackend
This plugin handles webhooks from Git providers to deploy entities from remote catalogs

Additional cookies in

Defined on steps
TransformRequest
This plugin adds cookies in the otoroshi request

Additional cookies out

Defined on steps
TransformResponse
This plugin adds cookies in the otoroshi response

Additional headers in

Defined on steps
TransformRequest
This plugin adds headers in the incoming otoroshi request

Additional headers out

Defined on steps
TransformResponse
This plugin adds headers in the otoroshi response

Allowed HTTP methods

Defined on steps
ValidateAccess
This plugin verifies the current request only uses allowed http methods

Apikey auth module

Defined on steps
PreRoute
This plugin adds basic auth on service where credentials are valid apikeys on the current service.

Apikeys

Defined on steps
MatchRouteValidateAccessTransformRequest
This plugin expects to find an apikey to allow the request to pass

Apikey quotas

Defined on steps
ValidateAccess
Increments quotas for the currents apikey. Useful when 'legacy checks' are disabled on a service/globally or when apikey are extracted in a custom fashion.

Auth0 Passwordless end flow endpoint

Defined on steps
CallBackend
This plugin provide an endpoint to end a passwordless flow

Auth0 Passwordless start/end flow

Defined on steps
ValidateAccessCallBackend
This plugin provide endpoints to start and end a passwordless flow

Auth0 Passwordless start/end flow endpoints

Defined on steps
CallBackend
This plugin provide endpoints to start and end a passwordless flow

Auth0 Passwordless start flow endpoint

Defined on steps
CallBackend
This plugin provide an endpoint to start a passwordless flow

Authentication

Defined on steps
ValidateAccess
This plugin applies an authentication module

Basic Auth. caller

Defined on steps
TransformRequest
This plugin can be used to call api that are authenticated using basic auth.

Basic auth. from auth. module

Defined on steps
ValidateAccess
This plugin enforces basic auth. authentication with users coming from LDAP and In-memory auth. modules

Block non HTTPS traffic

Defined on steps
ValidateAccess
This plugin blocks any incoming non HTTPS traffic and returns a nice error message because nowadays HTTPS should be deployed everywhere.
Also, this plugin will revoke any apikey or user session passed in clear text if there is one.
In that case, make sure this plugins comes after Apikey and Authentication plugins.

Brotli compression

Defined on steps
TransformResponse
This plugin can compress responses using brotli

Build mode

Defined on steps
PreRoute
This plugin displays a build page

Canary mode

Defined on steps
PreRouteTransformResponse
This plugin can split a portion of the traffic to canary backends

Consumer endpoint

Defined on steps
CallBackend
This plugin returns the current consumer profile

Context validator

Defined on steps
ValidateAccess
This plugin validates the current context using JSONPath validators.

This plugin let you configure a list of validators that will check if the current call can pass.
A validator is composed of a JSONPath that will tell what to check and a value that is the expected value.
The JSONPath will be applied on a document that will look like

``js
{
"snowflake" : "1516772930422308903",
"apikey" : { // current apikey
"clientId" : "vrmElDerycXrofar",
"clientName" : "default-apikey",
"metadata" : {
"foo" : "bar"
},
"tags" : [ ]
},
"user" : null, // current user
"request" : {
"id" : 1,
"method" : "GET",
"headers" : {
"Host" : "ctx-validation-next-gen.oto.tools:9999",
"Accept" : "*/*",
"User-Agent" : "curl/7.64.1",
"Authorization" : "Basic dnJtRWxEZXJ5Y1hyb2ZhcjpvdDdOSTkyVGI2Q2J4bWVMYU9UNzJxamdCU2JlRHNLbkxtY1FBcXBjVjZTejh0Z3I1b2RUOHAzYjB5SEVNRzhZ",
"Remote-Address" : "127.0.0.1:58929",
"Timeout-Access" : "<function1>",
"Raw-Request-URI" : "/foo",
"Tls-Session-Info" : "Session(1650461821330|SSL_NULL_WITH_NULL_NULL)"
},
"cookies" : [ ],
"tls" : false,
"uri" : "/foo",
"path" : "/foo",
"version" : "HTTP/1.1",
"has_body" : false,
"remote" : "127.0.0.1",
"client_cert_chain" : null
},
"config" : {
"validators" : [ {
"path" : "$.apikey.metadata.foo",
"value" : "bar"
} ]
},
"global_config" : { ... }, // global config
"attrs" : {
"otoroshi.core.SnowFlake" : "1516772930422308903",
"otoroshi.core.ElCtx" : {
"requestId" : "1516772930422308903",
"requestSnowflake" : "1516772930422308903",
"requestTimestamp" : "2022-04-20T15:37:01.548+02:00"
},
"otoroshi.next.core.Report" : "otoroshi.next.proxy.NgExecutionReport@277b44e2",
"otoroshi.core.RequestStart" : 1650461821545,
"otoroshi.core.RequestWebsocket" : false,
"otoroshi.core.RequestCounterOut" : 0,
"otoroshi.core.RemainingQuotas" : {
"authorizedCallsPerWindow" : 10000000,
"throttlingCallsPerWindow" : 0,
"remainingCallsPerWindow" : 10000000,
"authorizedCallsPerDay" : 10000000,
"currentCallsPerDay" : 2,
"remainingCallsPerDay" : 9999998,
"authorizedCallsPerMonth" : 10000000,
"currentCallsPerMonth" : 269,
"remainingCallsPerMonth" : 9999731
},
"otoroshi.next.core.MatchedRoutes" : "MutableList(route_022825450-e97d-42ed-8e22-b23342c1c7c8)",
"otoroshi.core.RequestNumber" : 1,
"otoroshi.next.core.Route" : { ... }, // current route as json
"otoroshi.core.RequestTimestamp" : "2022-04-20T15:37:01.548+02:00",
"otoroshi.core.ApiKey" : { ... }, // current apikey as json
"otoroshi.core.User" : { ... }, // current user as json
"otoroshi.core.RequestCounterIn" : 0
},
"route" : { ... },
"token" : null // current valid jwt token if one
}
`

the expected value support some syntax tricks like

*
Not(value) on a string to check if the current value does not equals another value
*
Regex(regex) on a string to check if the current value matches the regex
*
RegexNot(regex) on a string to check if the current value does not matches the regex
*
Wildcard(*value*) on a string to check if the current value matches the value with wildcards
*
WildcardNot(*value*) on a string to check if the current value does not matches the value with wildcards
*
Contains(value) on a string to check if the current value contains a value
*
ContainsNot(value) on a string to check if the current value does not contains a value
*
Contains(Regex(regex)) on an array to check if one of the item of the array matches the regex
*
ContainsNot(Regex(regex)) on an array to check if one of the item of the array does not matches the regex
*
Contains(Wildcard(*value*)) on an array to check if one of the item of the array matches the wildcard value
*
ContainsNot(Wildcard(*value*)) on an array to check if one of the item of the array does not matches the wildcard value
*
Contains(value) on an array to check if the array contains a value
*
ContainsNot(value) on an array to check if the array does not contains a value

for instance to check if the current apikey has a metadata name
foo with a value containing bar, you can write the following validator

`js
{
"path": "$.apikey.metadata.foo",
"value": "Contains(bar)"
}
``

Cookies validation

Defined on steps
ValidateAccess
This plugin validates cookies content

CORS

Defined on steps
PreRouteTransformResponse
This plugin applies CORS rules

Disable HTTP/1.0

Defined on steps
ValidateAccess
This plugin forbids HTTP/1.0 requests

Request Echo

Defined on steps
CallBackend
This plugin returns request content as json

Endless HTTP responses

Defined on steps
TransformRequest
This plugin returns 128 Gb of 0 to the ip addresses is in the list

Eureka instance

Defined on steps
CallBackend
Eureka plugin description

Internal Eureka target

Defined on steps
PreRoute
This plugin can be used to used a target that come from an internal Eureka server.
If you want to use a target which it locate outside of Otoroshi, you must use the External Eureka Server.

External Eureka target

Defined on steps
PreRoute
This plugin can be used to used a target that come from an external Eureka server.
If you want to use a target that is directly exposed by an implementation of Eureka by Otoroshi,
you must use the Internal Eureka Server.

fail2ban

Defined on steps
ValidateAccessTransformResponse
Temporarily bans client when too many failed requests occur within a detection window (fail2ban-like). Client is identified by the 'identifier' that can use the Otoroshi expression language to extract informations like user id, apikey, ip address, etc.

Force HTTPS traffic

Defined on steps
PreRoute
This plugin verifies the current request uses HTTPS

Forwarded header

Defined on steps
TransformRequest
This plugin adds all the Forwarded header to the request for the backend target

Global Maintenance mode

Defined on steps
PreRoute
This plugin displays a maintenance page for every services. Useful when 'legacy checks' are disabled on a service/globally

Global per ip address throttling

Defined on steps
ValidateAccess
Enforce global per ip address throttling. Useful when 'legacy checks' are disabled on a service/globally

Global throttling

Defined on steps
ValidateAccess
Enforce global throttling. Useful when 'legacy checks' are disabled on a service/globally

GraphQL Composer

Defined on steps
CallBackend
This plugin exposes a GraphQL API that you can compose with whatever you want

GraphQL Proxy

Defined on steps
CallBackend
This plugin can apply validations (query, schema, max depth, max complexity) on graphql endpoints

GraphQL Query to REST

Defined on steps
CallBackend
This plugin can be used to call GraphQL query endpoints and expose it as a REST endpoint

gRPC-Web Proxy

Defined on steps
TransformRequestTransformResponse
Proxies gRPC-Web requests to gRPC backend - Envoy compatible

Gzip compression

Defined on steps
TransformResponse
This plugin can compress responses using gzip

HMAC caller plugin

Defined on steps
TransformRequest
This plugin can be used to call a "protected" api by an HMAC signature. It will adds a signature with the secret configured on the plugin.
The signature string will always the content of the header list listed in the plugin configuration.

HMAC access validator

Defined on steps
ValidateAccess
This plugin can be used to check if a HMAC signature is present and valid in Authorization header.

Headers validation

Defined on steps
ValidateAccess
This plugin validates the values of incoming request headers

Http3 traffic switch

Defined on steps
TransformResponse
This plugin injects additional alt-svc header to switch to the http3 server

Image replacer

Defined on steps
TransformResponse
Replace all response with content-type image/* as they are proxied

IP allowed list

Defined on steps
ValidateAccess
This plugin verifies the current request ip address is in the allowed list

IP block list

Defined on steps
ValidateAccess
This plugin verifies the current request ip address is not in the blocked list

Izanami V2 proxy

Defined on steps
CallBackend
This plugin exposes Izanami routes

JQ

Defined on steps
TransformRequestTransformResponse
This plugin let you transform JSON bodies (in requests and responses) using JQ filters.

JQ transform request

Defined on steps
TransformRequest
This plugin let you transform request JSON body using JQ filters.

JQ transform response

Defined on steps
TransformResponse
This plugin let you transform JSON response using JQ filters.

Websocket JQ transformer

Defined on steps
TransformResponse
Transform messages JSON content using JQ filters

request body json-to-xml

Defined on steps
TransformRequest
This plugin transform incoming request body from json to xml and may apply a jq transformation

response body json-to-xml

Defined on steps
TransformResponse
This plugin transform response body from json to xml and may apply a jq transformation

JWE extractor

Defined on steps
TransformRequest
This plugin validates and extracts the payload of JWE

JWE signer

Defined on steps
TransformRequest
This plugin can only generate token

Jwt signer

Defined on steps
ValidateAccessTransformRequest
This plugin can only generate token

Jwt verifiers

Defined on steps
ValidateAccessTransformRequest
This plugin verifies the current request with one or more jwt verifier

Jwt verification only

Defined on steps
ValidateAccess
This plugin verifies the current request with one jwt verifier

Kubernetes Namespace Scanner

Defined on steps
CallBackend
Triggers Kubernetes CRD controller to scan specified namespaces

Limit headers in too long

Defined on steps
TransformRequest
This plugin limit all headers to backend with a length above a max

Limit headers out too long

Defined on steps
TransformRequest
This plugin limit all headers from backend with a length above a max

Maintenance mode

Defined on steps
PreRoute
This plugin displays a maintenance page

Missing cookies in

Defined on steps
TransformRequest
This plugin adds cookies in the otoroshi request if not present

Missing cookies out

Defined on steps
TransformResponse
This plugin adds cookies in the otoroshi response if not present

Missing headers in

Defined on steps
TransformRequest
This plugin adds headers (if missing) in the incoming otoroshi request

Missing headers out

Defined on steps
TransformResponse
This plugin adds headers (if missing) in the otoroshi response

Mock Responses

Defined on steps
CallBackend
This plugin returns mock responses

Multi Authentication

Defined on steps
ValidateAccess
This plugin applies an authentication module from a list of selected modules

Apikey mandatory metadata

Defined on steps
ValidateAccess
This plugin checks that if an apikey is provided, there is one or more metadata on it

Apikey mandatory tags

Defined on steps
ValidateAccess
This plugin checks that if an apikey is provided, there is one or more tags on it

User logged in expected

Defined on steps
ValidateAccess
This plugin enforce that a user from any auth. module is logged in

User extraction from auth. module

Defined on steps
ValidateAccess
This plugin extracts users from an authentication module without enforcing login

Apikey from Biscuit token extractor

Defined on steps
PreRoute
This plugin extract an from a Biscuit token where the biscuit has an #authority fact 'client_id' containing
apikey client_id and an #authority fact 'client_sign' that is the HMAC256 signature of the apikey client_id with the apikey client_secret

Biscuit token validator

Defined on steps
ValidateAccess
This plugin validates a Biscuit token

Client certificate as apikey

Defined on steps
PreRoute
This plugin uses client certificate as an apikey. The apikey will be stored for classic apikey usage

Client certificate header

Defined on steps
TransformRequest
This plugin pass client certificate informations to the target in headers

Client credential token endpoint

Defined on steps
CallBackend
This plugin provide the endpoint for the client_credential flow

Client Credential Service

Defined on steps
Sink
This plugin add an an oauth client credentials service (https://unhandleddomain/.well-known/otoroshi/oauth/token) to create an access_token given a client id and secret

Custom quotas

Defined on steps
ValidateAccess
This plugin will enforce quotas on the current route based on whatever you want

Custom throttling

Defined on steps
ValidateAccess
This plugin will enforce throttling on the current route based on whatever you want

Default request body

Defined on steps
TransformRequest
This plugin adds a default request body if none specified

Defer Responses

Defined on steps
TransformRequest
This plugin will expect a X-Defer header or a defer query param and defer the response according to the value in milliseconds.
This plugin is some kind of inside joke as one a our customer ask us to make slower apis.

Global self registration endpoints (service discovery)

Defined on steps
Sink
This plugin add support for self registration endpoint on specific hostnames

Self registration endpoints (service discovery)

Defined on steps
TransformRequest
This plugin add support for self registration endpoint on a specific service

Service discovery target selector (service discovery)

Defined on steps
PreRoute
This plugin select a target in the pool of discovered targets for this service.
Use in combination with either DiscoverySelfRegistrationSink or DiscoverySelfRegistrationTransformer to make it work using the self registration pattern.
Or use an implementation of DiscoveryJob for the third party registration pattern.

Error response rewrite

Defined on steps
TransformResponse
This plugin catch http response with specific statuses and rewrite the response

Expected consumer

Defined on steps
ValidateAccess
This plugin expect that a user or an apikey made the call

External request validator

Defined on steps
ValidateAccess
This plugin checks let requests pass based on an external validation service

Generic allowed list

Defined on steps
ValidateAccess
This plugin checks let requests pass based on an el expression

Generic block list

Defined on steps
ValidateAccess
This plugin checks let requests is blocked based on an el expression

Geolocation endpoint

Defined on steps
TransformRequest
This plugin will expose current geolocation informations on the following endpoint /.well-known/otoroshi/plugins/geolocation

Geolocation header

Defined on steps
TransformRequest
This plugin will send informations extracted by the Geolocation details extractor to the target service in a header.

Allowed users only

Defined on steps
ValidateAccess
This plugin only let allowed users pass

Client Certificate + Api Key only

Defined on steps
ValidateAccess
Check if a client certificate is present in the request and that the apikey used matches the client certificate.
You can set the client cert. DN in an apikey metadata named allowed-client-cert-dn

Client certificate matching (over http)

Defined on steps
ValidateAccess
Check if client certificate matches the following fetched from an http endpoint

Client certificate matching

Defined on steps
ValidateAccess
Check if client certificate matches the following configuration

Client Certificate Only

Defined on steps
ValidateAccess
Check if a client certificate is present in the request

Html Patcher

Defined on steps
TransformResponse
This plugin can inject elements in html pages (in the body or in the head) returned by the service

HTTP Client Cache

Defined on steps
TransformResponse
This plugin add cache headers to responses

Globally allowed domain names

Defined on steps
ValidateAccess
Globally allowed domain names plugin

Globally denied domain names

Defined on steps
ValidateAccess
Globally denied domain names plugin

Geolocation details extractor (using IpStack api)

Defined on steps
PreRoute
This plugin extract geolocation informations from ip address using the IpStack dbs.
The informations are store in plugins attrs for other plugins to use

Izanami V1 Canary Campaign

Defined on steps
TransformRequestTransformResponse
This plugin allow you to perform canary testing based on an izanami experiment campaign (A/B test)

Izanami v1 APIs Proxy

Defined on steps
TransformRequest
This plugin exposes routes to proxy Izanami configuration and features tree APIs

Jwt user extractor

Defined on steps
PreRoute
This plugin extract a user from a JWT token

Legacy apikeys

Defined on steps
MatchRouteValidateAccessTransformRequest
This plugin expects to find an apikey to allow the request to pass. This plugin behaves exactly like the service descriptor does

Legacy Authentication

Defined on steps
ValidateAccess
This plugin applies an authentication module the same way service descriptor does

Log4Shell mitigation plugin

Defined on steps
TransformRequest
This plugin try to detect Log4Shell attacks in request and block them

Geolocation details extractor (using Maxmind db)

Defined on steps
PreRoute
This plugin extract geolocation informations from ip address using the Maxmind dbs.
The informations are store in plugins attrs for other plugins to use

Response Cache

Defined on steps
TransformRequestTransformResponse
This plugin can cache responses from target services in the otoroshi datasstore
It also provides a debug UI at /.well-known/otoroshi/bodylogger.

Security Txt

Defined on steps
TransformRequest
This plugin exposes a special route /.well-known/security.txt as defined in RFC 9116 (https://www.rfc-editor.org/rfc/rfc9116.html)

Public quotas

Defined on steps
ValidateAccess
This plugin will enforce public quotas on the current route

Traffic Mirroring

Defined on steps
TransformRequestTransformResponse
This plugin will mirror every request to other targets

User-Agent details extractor

Defined on steps
PreRoute
This plugin extract informations from User-Agent header such as browsser version, OS version, etc.
The informations are store in plugins attrs for other plugins to use

User-Agent endpoint

Defined on steps
TransformRequest
This plugin will expose current user-agent informations on the following endpoint: /.well-known/otoroshi/plugins/user-agent

User-Agent header

Defined on steps
TransformRequest
This plugin will sent informations extracted by the User-Agent details extractor to the target service in a header

OAuth1 caller

Defined on steps
TransformRequestTransformResponse
This plugin can be used to call api that are authenticated using OAuth1.
Consumer key, secret, and OAuth token et OAuth token secret can be pass through the metadata of an api key
or via the configuration of this plugin.```

OAuth2 caller

Defined on steps
TransformRequest
This plugin can be used to call api that are authenticated using OAuth2 client_credential/password flow.
Do not forget to enable client retry to handle token generation on expire.

OIDC access_token as apikey

Defined on steps
PreRoute
This plugin will use the third party apikey configuration to generate an apikey

OIDC access_token validator

Defined on steps
ValidateAccess
This plugin will use the third party apikey configuration and apply it while keeping the apikey mecanism of otoroshi.
Use it to combine apikey validation and OIDC access_token validation.

OIDC access_token authentication

Defined on steps
ValidateAccess
This plugin will authenticate a user based on it's OIDC access_token

OIDC headers

Defined on steps
TransformRequest
This plugin injects headers containing tokens and profile from current OIDC provider.

OIDC JWT verification

Defined on steps
ValidateAccess
This plugin verifies the current request jwt token against OIDC JWT verification settings living in an OIDC auth. module

OpenFGA validator

Defined on steps
ValidateAccess
Enforces fine-grained authorizations using OpenFGA

Otoroshi AIA endpoint

Defined on steps
CallBackend
This plugin provide an endpoint to return Otoroshi Authority Information Access for your certificates

Otoroshi challenge token

Defined on steps
TransformRequestTransformResponse
This plugin adds a jwt challenge token to the request to a backend and expects a response with a matching token

Otoroshi headers in

Defined on steps
TransformRequest
This plugin adds Otoroshi specific headers to the request

Otoroshi Health endpoint

Defined on steps
CallBackend
This plugin provide an endpoint to return Otoroshi Health informations data for the current node

Otoroshi info. token

Defined on steps
TransformRequest
This plugin adds a jwt token with informations about the caller to the backend

Otoroshi JWKS endpoint

Defined on steps
CallBackend
This plugin provide an endpoint to return Otoroshi JWKS data

Otoroshi Metrics endpoint

Defined on steps
CallBackend
This plugin provide an endpoint to return Otoroshi metrics data for the current node

Otoroshi OCSP Responder endpoint

Defined on steps
CallBackend
This plugin provide an endpoint to act as the Otoroshi OCSP Responder

Override host header

Defined on steps
TransformRequest
This plugin override the current Host header with the Host of the backend target

Override Location header

Defined on steps
TransformResponse
This plugin override the current Location header with the current frontend host if the location start with the Host of the backend target

cdn.polyfill.io detector

Defined on steps
TransformResponse
This plugin detects compromised cdn.polyfill.io script tags in html resource with the cloudflare equivalent and send an alert event. For each occurence of a cdn.polyfill.io script tag, a CdnPolyfillIoDetectedAlert will be sent

cdn.polyfill.io mitigation

Defined on steps
TransformResponse
This plugin replaces compromised cdn.polyfill.io script tags in html resource with the cloudflare equivalent. For each occurence of a cdn.polyfill.io script tag, a CdnPolyfillIoReplacedAlert will be sent

Public/Private paths

Defined on steps
ValidateAccess
This plugin allows or forbid request based on path patterns

Strict mode = restricted access.
Only an API key is accepted.

Query param transformer

Defined on steps
TransformRequest
This plugin can modify the query params of the request

RBAC

Defined on steps
ValidateAccess
This plugin check if current user/apikey/jwt token has the right role

React2Shell detector

Defined on steps
TransformRequest
This plugin detects (and block) React2Shell attacks

Read only requests

Defined on steps
ValidateAccess
This plugin verifies the current request only reads data

Redirection

Defined on steps
PreRoute
This plugin redirects the current request elsewhere

Regex request body rewriter

Defined on steps
TransformRequest
Rewrites the HTTP request body using a set of regex rules

Regex request headers rewriter

Defined on steps
TransformRequest
Rewrites the HTTP request headers using a set of regex rules

Regex response body rewriter

Defined on steps
TransformResponse
Rewrites the HTTP response body using a set of regex rules, with optional auto-prefix for relative hrefs.

Regex response headers rewriter

Defined on steps
TransformResponse
Rewrites the HTTP response headers using a set of regex rules

Reject headers in too long

Defined on steps
TransformRequest
This plugin remove all headers to backend with a length above a max

Reject headers out too long

Defined on steps
TransformRequest
This plugin remove all headers from backend with a length above a max

Remove cookies in

Defined on steps
TransformRequest
This plugin remove cookies from the otoroshi request

Remove cookies out

Defined on steps
TransformResponse
This plugin remove cookies from the otoroshi response

Remove headers in

Defined on steps
TransformRequest
This plugin removes headers in the incoming otoroshi request

Remove headers out

Defined on steps
TransformResponse
This plugin removes headers in the otoroshi response

Request bandwidth throttling

Defined on steps
TransformRequest
This plugin will limit request body bandwidth

Request body Echo

Defined on steps
CallBackend
This plugin returns request body content

Request Body length limiter

Defined on steps
TransformRequest
This plugin will limit request body length

Response bandwidth throttling

Defined on steps
TransformResponse
This plugin will limit response body bandwidth

Response Body length limiter

Defined on steps
TransformResponse
This plugin will limit response body length

Robots

Defined on steps
TransformRequestTransformResponse
This plugin provides all the necessary tool to handle search engine robots

Routing Restrictions

Defined on steps
ValidateAccess
This plugin apply routing restriction method domain/path on the current request/route

S3 Static backend

Defined on steps
CallBackend
This plugin is able to S3 bucket with file content

SOAP action

Defined on steps
CallBackend
This plugin is able to call SOAP actions and expose it as a rest endpoint

Security Headers

Defined on steps
TransformResponse
Inject common HTTP security headers on responses (HSTS, CSP, XFO, X-XSS-Protection, X-Content-Type-Options, Referrer-Policy, Permissions-Policy)

Send otoroshi headers back

Defined on steps
TransformResponse
This plugin adds response header containing useful informations about the current call

Basic Auth

Defined on steps
ValidateAccess
This plugin can be used to protect a route with basic auth. You can use clear text passwords (not recommended for production usage) or Bcryt hashed password as password values

Snow Monkey Chaos

Defined on steps
TransformRequestTransformResponse
This plugin introduce some chaos into you life

Http static asset

Defined on steps
TransformRequest
Serve any static http asset for the current request

Static backend

Defined on steps
CallBackend
This plugin is able to serve a static folder with file content

Static Response

Defined on steps
CallBackend
This plugin returns static responses

Swagger UI

Defined on steps
CallBackend
Serves a Swagger UI page from a configurable OpenAPI specification URL

Tailscale select target by name

Defined on steps
TransformRequest
This plugin selects a machine instance on Tailscale network based on its name

TCP Tunnel

Defined on steps
HandlesTunnel
This plugin creates TCP tunnels through otoroshi

Time controlled Canary mode

Defined on steps
PreRouteTransformResponse
This plugin can split a portion of the traffic to canary backends between two dates

Time Restriction

Defined on steps
ValidateAccess
This plugin restrict when a route is accessible

UDP Tunnel

Defined on steps
HandlesTunnel
This plugin creates UDP tunnels through otoroshi

User logout endpoint

Defined on steps
CallBackend
This plugin logout the current user

User profile endpoint

Defined on steps
CallBackend
This plugin returns the current user profile

W3C Trace Context

Defined on steps
TransformRequestTransformResponse
This plugin propagates W3C Trace Context spans and can export it to Jaeger or Zipkin

Wasm Access control

Defined on steps
ValidateAccess
Delegate route access to a wasm plugin

Wasm Backend

Defined on steps
CallBackend
This plugin can be used to use a wasm plugin as backend

Open Policy Agent (OPA)

Defined on steps
ValidateAccess
Repo policies as WASM modules

Wasm pre-route

Defined on steps
PreRoute
This plugin can be used to use a wasm plugin as in pre-route phase

Wasm Request Transformer

Defined on steps
TransformRequest
Transform the content of the request with a wasm plugin

Wasm Response Transformer

Defined on steps
TransformResponse
Transform the content of a response with a wasm plugin

Wasm Route Matcher

Defined on steps
MatchRoute
This plugin can be used to use a wasm plugin as route matcher

Wasm Router

Defined on steps
Router
Can decide for routing with a wasm plugin

Wasm Sink

Defined on steps
Sink
Handle unmatched requests with a wasm plugin

Websocket Wasm transformer

Defined on steps
TransformResponse
Transform messages and filter websocket messages

Websocket content validator in

Defined on steps
ValidateAccess
Validate the content of each frame

Websocket json format validator

Defined on steps
ValidateAccess
Validate the json

Websocket mirror backend

Defined on steps
CallBackend
Mirror incoming websocket messages to another target

Websocket size validator

Defined on steps
ValidateAccessTransformResponse
Make sure the frame does not exceed the maximum size set.

Websocket type validator

Defined on steps
ValidateAccess
Validate the type of each frame

Websocket Workflow transformer

Defined on steps
TransformRequestTransformResponse
Transform messages and filter websocket messages

X-Forwarded-* headers

Defined on steps
TransformRequest
This plugin adds all the X-Forwarded-* headers to the request for the backend target

request body xml-to-json

Defined on steps
TransformRequest
This plugin transform incoming request body from xml to json and may apply a jq transformation

response body xml-to-json

Defined on steps
TransformResponse
This plugin transform response body from xml to json and may apply a jq transformation

Zip Bomb backend

Defined on steps
CallBackend
This plugin returns zip bomb responses based on predicates

Zip file backend

Defined on steps
CallBackend
Serves content from a zip file

Yes

Defined on steps
CallBackend
Outputs Ys to the client

Remote tunnel calls

Defined on steps
CallBackend
This plugin can contact remote service using tunnels

Workflow Access control

Defined on steps
ValidateAccess
Delegate route access to a worflow

Workflow Backend

Defined on steps
CallBackend
This plugin uses a workflow as a backend

Workflow Request Transformer

Defined on steps
TransformRequest
Transform the content of the request with a workflow

Workflow Response Transformer

Defined on steps
TransformResponse
Transform the content of a response with a workflow

Workflow Resume Backend

Defined on steps
CallBackend
This plugin can be used to resume a paused workflow

Coraza WAF

Defined on steps
ValidateAccessTransformRequestTransformResponse
Coraza WAF plugin

Coraza WAF - Incoming Request Validator

Defined on steps
ValidateAccess
Coraza WAF - Incoming Request Validator plugin