Document Shortest Possible 😎 Path for Noobs #149
Description
oauth2_proxy
offers a number of configuration options.
For folks looking to get up and running, quickly, it would be awesome to add a 15 minute "Quickstart" guide.
This right place for this may be a separate repo containing the compiled binaries, and an app.json
file to power a "Deploy to Heroku" button.
For others looking to get started quickly, here is how I typically do it using the Google Apps provider and an upstream application which requires a secret HTTP Basic Auth password to access:
-
Create a new repo.
-
Put the latest binaries from the releases pages into your repo.
-
Create an
oauth2_proxy.cfg
file. Here are the minimal options you'll need:# Restrict access to folks with this Google Apps domain. email_domains = ["$YOUR_GOOGLE_APPS_DOMAIN"] # Send the HTTP Basic Auth password `PASSWORD` to all upstreams for all users. basic_auth_password = "PASSWORD" pass_basic_auth = true # Rather than forwarding the `Host` header of the client to the upstream, use # the host defined in the upstream configuration. pass_host_header = false # The application that you're providing authentication for. upstreams = ["https://$YOUR_UPSTREAM_APP.herokuapp.com/"]
-
Create a Heroku app using the binary builtpack:
heroku create oauth2_proxy_test heroku buildpacks:set https://github.com/ph3nx/heroku-binary-buildpack
-
Create a
Procfile
to run the binary with your config:web: bin/oauth2_proxy-2.0.1.linux-amd64.go1.5.1/oauth2_proxy -http-address="0.0.0.0:$PORT" -config='oauth2_proxy.cfg'
-
Follow the Google Auth Provider instructions. Set the required environment config variables on Heroku:
heroku config:set \ OAUTH2_PROXY_CLIENT_ID="..." \ OAUTH2_PROXY_CLIENT_SECRET="..." \ OAUTH2_PROXY_COOKIE_SECRET="$(cat /dev/urandom | env LC_CTYPE=C tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)"
-
Deploy your app to Heroku and rejoice.
For those looking to test locally using HTTP, make sure to toggle these settings:
- Set
cookie_secure=false
. This avoids responding with asecure
cookie on HTTP, which the browser will discard. - Set
redirect_url="http://127.0.0.1.xip.io:4180/oauth2/callback"
. By default the server will attempt to set cookies on the same domain as the request – this will fail forlocalhost
and127.0.0.1
(as well as any IP based domain.
❤️