ooproxy

A reverse OpenID Connect and OAuth 2 proxy, implementing the client-credentials flow (machine-to-machine authentication/authorization). It can be used to protect http-based APIs with an authentication mechanism. Because it only supports the client-credentials flow, there are no redirects when the authentication fails, and only bearer tokens are supported in the authorization header.

The proxy has the following advantages: * Low resource usage (CPU / Memory), small docker image * Doesn't put a lot of strain on the SSO server, will only retrieve new keys on the first request, when keys are rotated and on an optional timeout

The proxy supports the following algorithms:

The reverse authentication proxy

Configuration

The proxy can be configured through environment variables:

It also supports loading a configuration from a settings.toml file in $PATH:

listen_url = "0.0.0.0:8080' listen_ssl_url = '0.0.0.0:4443' cert_file = 'cert.pfx' cert_password = 'hunter2' upstream_url = 'http://upstream.com' provider_url = 'https://my-identity.com' client_secret = 'secret' key_expiry_secs = 3600 upstream_timeout_secs = 120 audience = '"my-api"' subject = 'my-user' leeway = 3 num_workers = 8

Run

Run from docker:

docker run -e LISTEN_URL=0.0.0.0:80 -e PROVIDER_URL=https://identity -e CLIENT_SECRET=secret -e UPSTREAM_URL=https://upstream/ -e RUST_LOG=info -e KEY_EXPIRY_SECS=3600 -e UPSTREAM_TIMEOUT_SECS=60 -e NUM_WORKERS=4 -e AUDIENCE='\"myproxy\"' -e SUBJECT=myuser -e LEEWAY=2 -e CERT_FILE=cert.pfx -e CERT_PASSWORD=hunter2 hal24000/ooproxy:lastest

Run outside docker (after building, use a settings.toml file):

ooproxy

Build

If you want to run the proxy inside docker:

docker build . -t ooproxy

For a docker image with TLS use:

docker build . -t ooproxy --build-arg features=tls

Or, if you want to run the proxy outside of docker:

cargo install ooproxy

With TLS:

cargo install ooproxy --all-features

Copyright

HAL 24000 B.V. 2018