This post covers how to configure Github based login for the Caddy webserver. This allows single sign on using Oauth2. The Caddy plugins
http.login are required.
Create an Oauth2 App in Github
Log into your Github account and open Developer Settings.
Create a new Oauth2 App, set
https://<domain>/login/github as the Authorization Callback URL
Using Oauth2 requires the http.login and http.jwt plugins, which are not included by default. There are a number of ways to build Caddy - I used the Dockerfile below. To build, run the following command
docker build . -t local/caddy. You will need a
index.html in your working directory.
Once Caddy has been built, it can be started using docker-compose.
This is the Caddyfile. All requests to
/ are redirected to
/login. On successful Oauth2 verification, the user is redirected to
sub statement specifies the authorized Github accounts (by username)
Trying it out
In a private window, I open up my site, and as expected, it redirects to the login page
The sign in link points to a login page on the Github.com domain
The first time you log in, you will have to associate the Oauth2 App with your Github account; only associate your account with sites you consider trustworthy!
Upon authorization, you will be redirected to the site's internal area.