From f7f4320e6f17999b1fdc4a86f83260a92e16a56b Mon Sep 17 00:00:00 2001 From: Paul Greenberg Date: Tue, 29 Sep 2020 21:37:19 -0400 Subject: [PATCH] add Github OAuth2.0 docs --- README.md | 27 ++++++++++++++++++ assets/docs/images/oauth2_github_new_app.png | Bin 0 -> 37342 bytes .../docs/images/oauth2_github_sign_keys.png | Bin 0 -> 11189 bytes assets/docs/pages/80-backend-oauth2.md | 26 +++++++++++++++++ 4 files changed, 53 insertions(+) create mode 100644 assets/docs/images/oauth2_github_new_app.png create mode 100644 assets/docs/images/oauth2_github_sign_keys.png diff --git a/README.md b/README.md index ce31c68..5a2074a 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,7 @@ Please ask questions either here or via LinkedIn. I am happy to help you! @green * [Auth0](#auth0) * [OneLogin](#onelogin) * [Microsoft](#microsoft) + * [Github](#github) * [X.509 Certificate-based Authentication Backend](#x509-certificate-based-authentication-backend) @@ -1590,6 +1591,32 @@ TBD. [:arrow_up: Back to Top](#table-of-contents) +#### Github + +Follow the instructions at `https://github.com/settings/apps/new`. + +GitHub App name: "My Gatekeeper" + +Description: "Caddy v2 Authentication Portal" + +Homepage URL: `https://localhost:8443/` + +User authorization callback URL: `https://localhost:8443/auth/oauth2/github/authorization-code-callback` + +Check "Expire user authorization tokens". + +Check "Request user authorization (OAuth) during installation" + +Upon successful completion of the instructions, you will get: + +![Settings - Developer settings - GitHub Apps - My Gatekeeper](./assets/docs/images/oauth2_github_new_app.png) + +Additionally, click "generate a private key" to sign access token requests. + +![Settings - Developer settings - GitHub Apps - My Gatekeeper - Private Keys](./assets/docs/images/oauth2_github_sign_keys.png) + +[:arrow_up: Back to Top](#table-of-contents) + ## X.509 Certificate-based Authentication Backend diff --git a/assets/docs/images/oauth2_github_new_app.png b/assets/docs/images/oauth2_github_new_app.png new file mode 100644 index 0000000000000000000000000000000000000000..67b3b29eb9dea88efad0c4a7d171fbc7901eb1a9 GIT binary patch literal 37342 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 M>FVdQ&MBb@0JIk>3;+NC literal 0 HcmV?d00001 diff --git a/assets/docs/images/oauth2_github_sign_keys.png b/assets/docs/images/oauth2_github_sign_keys.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9cc53d31f3cfda0c6fbe2ac53a61abb2c4bd3b GIT binary patch literal 11189 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 NSeRK~EirM8_-{H(o(KQ{ literal 0 HcmV?d00001 diff --git a/assets/docs/pages/80-backend-oauth2.md b/assets/docs/pages/80-backend-oauth2.md index 4e32026..efb3ae4 100644 --- a/assets/docs/pages/80-backend-oauth2.md +++ b/assets/docs/pages/80-backend-oauth2.md @@ -312,4 +312,30 @@ TBD. [:arrow_up: Back to Top](#table-of-contents) +#### Github + +Follow the instructions at `https://github.com/settings/apps/new`. + +GitHub App name: "My Gatekeeper" + +Description: "Caddy v2 Authentication Portal" + +Homepage URL: `https://localhost:8443/` + +User authorization callback URL: `https://localhost:8443/auth/oauth2/github/authorization-code-callback` + +Check "Expire user authorization tokens". + +Check "Request user authorization (OAuth) during installation" + +Upon successful completion of the instructions, you will get: + +![Settings - Developer settings - GitHub Apps - My Gatekeeper](./assets/docs/images/oauth2_github_new_app.png) + +Additionally, click "generate a private key" to sign access token requests. + +![Settings - Developer settings - GitHub Apps - My Gatekeeper - Private Keys](./assets/docs/images/oauth2_github_sign_keys.png) + +[:arrow_up: Back to Top](#table-of-contents) +