So I set out to build a truly simple proxy that can do the following:
* automatic certificates with letsencrypt (using the library created by the awesome caddy team)
* authenticate users (currently only sign in with google is supported, but the underlying library should make it trivial to extend this)
* authorize users based on simple glob matching
* allow creating (and modifying) routes by CLI and API
Building this I truly started to appreciate the meaning of standing on the shoulders of giants, the Go libraries I've used are extensive and made this application a lot easier to create.
While tobab is by no means finished, if you are looking for a easy to use reverse proxy that will handle certificates and auth for you, this could be the tool you are looking for.
Very nice:
- Secure by default (automatic https with letsencrypt, secure cookies)
- Sane defaults (No public access unless explicitly added)
Curious (not nit picking). What's the high level possibility of allowing keycloak (or another self hosted auth provider)?
Looks like you are leveraging goth... fairly simple for someone to extend down the road via a contribution, correct? https://github.com/gnur/tobab/blob/2d1fa1227d1f56ee332d3d83b...
Goth might actually have specific support for keycloak, but I'm not sure about that to be honest.
After a bit of reading, I was shocked that I had set up a reverse proxy with just a single 2 line "caddyfile":
subdomain.mydomain.ltd
reverse_proxy 127.0.0.1:5000
For my humble use case it couldn't be any simpler. $ caddy reverse-proxy --from subdomain.mydomain.tld --to 127.0.0.1:5000
Is equivalent, no config file needed :)https://github.com/oauth2-proxy/oauth2-proxy
I've used that to gate-access to internal things behind gsuite domains, and it supports authentication against github and other providers too.
"the poor mans identity aware proxy, easy to use setup for beyondcorp in your homelab"
->
"the poor man's identity-aware proxy with an easy-to-use setup for beyondcorp in your homelab"