+
404
+
+
Page not found :(
+
The requested page could not be found.
+
diff --git a/docs/4_tls.md b/docs/4_tls.md
new file mode 100644
index 0000000..706b665
--- /dev/null
+++ b/docs/4_tls.md
@@ -0,0 +1,73 @@
+---
+layout: default
+title: TLS Configuration
+permalink: /tls-configuration
+nav_order: 4
+---
+
+## SSL Configuration
+
+There are two recommended configurations.
+
+1. Configure SSL Termination with OAuth2 Proxy by providing a `--tls-cert=/path/to/cert.pem` and `--tls-key=/path/to/cert.key`.
+
+The command line to run `oauth2_proxy` in this configuration would look like this:
+
+```bash
+./oauth2_proxy \
+ --email-domain="yourcompany.com" \
+ --upstream=http://127.0.0.1:8080/ \
+ --tls-cert=/path/to/cert.pem \
+ --tls-key=/path/to/cert.key \
+ --cookie-secret=... \
+ --cookie-secure=true \
+ --provider=... \
+ --client-id=... \
+ --client-secret=...
+```
+
+2. Configure SSL Termination with [Nginx](http://nginx.org/) (example config below), Amazon ELB, Google Cloud Platform Load Balancing, or ....
+
+Because `oauth2_proxy` listens on `127.0.0.1:4180` by default, to listen on all interfaces (needed when using an
+external load balancer like Amazon ELB or Google Platform Load Balancing) use `--http-address="0.0.0.0:4180"` or
+`--http-address="http://:4180"`.
+
+Nginx will listen on port `443` and handle SSL connections while proxying to `oauth2_proxy` on port `4180`.
+`oauth2_proxy` will then authenticate requests for an upstream application. The external endpoint for this example
+would be `https://internal.yourcompany.com/`.
+
+An example Nginx config follows. Note the use of `Strict-Transport-Security` header to pin requests to SSL
+via [HSTS](http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security):
+
+```
+server {
+ listen 443 default ssl;
+ server_name internal.yourcompany.com;
+ ssl_certificate /path/to/cert.pem;
+ ssl_certificate_key /path/to/cert.key;
+ add_header Strict-Transport-Security max-age=2592000;
+
+ location / {
+ proxy_pass http://127.0.0.1:4180;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Scheme $scheme;
+ proxy_connect_timeout 1;
+ proxy_send_timeout 30;
+ proxy_read_timeout 30;
+ }
+}
+```
+
+The command line to run `oauth2_proxy` in this configuration would look like this:
+
+```bash
+./oauth2_proxy \
+ --email-domain="yourcompany.com" \
+ --upstream=http://127.0.0.1:8080/ \
+ --cookie-secret=... \
+ --cookie-secure=true \
+ --provider=... \
+ --client-id=... \
+ --client-secret=...
+```
diff --git a/docs/5_endpoints.md b/docs/5_endpoints.md
new file mode 100644
index 0000000..6733cb1
--- /dev/null
+++ b/docs/5_endpoints.md
@@ -0,0 +1,17 @@
+---
+layout: default
+title: Endpoints
+permalink: /endpoints
+nav_order: 5
+---
+
+## Endpoint Documentation
+
+OAuth2 Proxy responds directly to the following endpoints. All other endpoints will be proxied upstream when authenticated. The `/oauth2` prefix can be changed with the `--proxy-prefix` config variable.
+
+- /robots.txt - returns a 200 OK response that disallows all User-agents from all paths; see [robotstxt.org](http://www.robotstxt.org/) for more info
+- /ping - returns a 200 OK response, which is intended for use with health checks
+- /oauth2/sign_in - the login page, which also doubles as a sign out page (it clears cookies)
+- /oauth2/start - a URL that will redirect to start the OAuth cycle
+- /oauth2/callback - the URL used at the end of the OAuth cycle. The oauth app will be configured with this as the callback url.
+- /oauth2/auth - only returns a 202 Accepted response or a 401 Unauthorized response; for use with the [Nginx `auth_request` directive](#nginx-auth-request)
diff --git a/docs/6_request_signatures.md b/docs/6_request_signatures.md
new file mode 100644
index 0000000..9feb961
--- /dev/null
+++ b/docs/6_request_signatures.md
@@ -0,0 +1,24 @@
+---
+layout: default
+title: Request Signatures
+permalink: /request-signatures
+nav_order: 6
+---
+
+## Request signatures
+
+If `signature_key` is defined, proxied requests will be signed with the
+`GAP-Signature` header, which is a [Hash-based Message Authentication Code
+(HMAC)](https://en.wikipedia.org/wiki/Hash-based_message_authentication_code)
+of selected request information and the request body [see `SIGNATURE_HEADERS`
+in `oauthproxy.go`](./oauthproxy.go).
+
+`signature_key` must be of the form `algorithm:secretkey`, (ie: `signature_key = "sha1:secret0"`)
+
+For more information about HMAC request signature validation, read the
+following:
+
+- [Amazon Web Services: Signing and Authenticating REST
+ Requests](https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html)
+- [rc3.org: Using HMAC to authenticate Web service
+ requests](http://rc3.org/2011/12/02/using-hmac-to-authenticate-web-service-requests/)
diff --git a/docs/Gemfile b/docs/Gemfile
new file mode 100644
index 0000000..26a6183
--- /dev/null
+++ b/docs/Gemfile
@@ -0,0 +1,11 @@
+source "https://rubygems.org"
+gem "github-pages", group: :jekyll_plugins
+
+# just-the-docs Jekyll theme
+gem "just-the-docs"
+
+# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
+gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]
+
+# Performance-booster for watching directories on Windows
+gem "wdm", "~> 0.1.0" if Gem.win_platform?
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
new file mode 100644
index 0000000..8d96e5d
--- /dev/null
+++ b/docs/Gemfile.lock
@@ -0,0 +1,254 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ activesupport (4.2.10)
+ i18n (~> 0.7)
+ minitest (~> 5.1)
+ thread_safe (~> 0.3, >= 0.3.4)
+ tzinfo (~> 1.1)
+ addressable (2.5.2)
+ public_suffix (>= 2.0.2, < 4.0)
+ coffee-script (2.4.1)
+ coffee-script-source
+ execjs
+ coffee-script-source (1.11.1)
+ colorator (1.1.0)
+ commonmarker (0.17.13)
+ ruby-enum (~> 0.5)
+ concurrent-ruby (1.1.4)
+ dnsruby (1.61.2)
+ addressable (~> 2.5)
+ em-websocket (0.5.1)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0.6.0)
+ ethon (0.12.0)
+ ffi (>= 1.3.0)
+ eventmachine (1.2.7)
+ execjs (2.7.0)
+ faraday (0.15.4)
+ multipart-post (>= 1.2, < 3)
+ ffi (1.10.0)
+ forwardable-extended (2.6.0)
+ gemoji (3.0.0)
+ github-pages (193)
+ activesupport (= 4.2.10)
+ github-pages-health-check (= 1.8.1)
+ jekyll (= 3.7.4)
+ jekyll-avatar (= 0.6.0)
+ jekyll-coffeescript (= 1.1.1)
+ jekyll-commonmark-ghpages (= 0.1.5)
+ jekyll-default-layout (= 0.1.4)
+ jekyll-feed (= 0.11.0)
+ jekyll-gist (= 1.5.0)
+ jekyll-github-metadata (= 2.9.4)
+ jekyll-mentions (= 1.4.1)
+ jekyll-optional-front-matter (= 0.3.0)
+ jekyll-paginate (= 1.1.0)
+ jekyll-readme-index (= 0.2.0)
+ jekyll-redirect-from (= 0.14.0)
+ jekyll-relative-links (= 0.5.3)
+ jekyll-remote-theme (= 0.3.1)
+ jekyll-sass-converter (= 1.5.2)
+ jekyll-seo-tag (= 2.5.0)
+ jekyll-sitemap (= 1.2.0)
+ jekyll-swiss (= 0.4.0)
+ jekyll-theme-architect (= 0.1.1)
+ jekyll-theme-cayman (= 0.1.1)
+ jekyll-theme-dinky (= 0.1.1)
+ jekyll-theme-hacker (= 0.1.1)
+ jekyll-theme-leap-day (= 0.1.1)
+ jekyll-theme-merlot (= 0.1.1)
+ jekyll-theme-midnight (= 0.1.1)
+ jekyll-theme-minimal (= 0.1.1)
+ jekyll-theme-modernist (= 0.1.1)
+ jekyll-theme-primer (= 0.5.3)
+ jekyll-theme-slate (= 0.1.1)
+ jekyll-theme-tactile (= 0.1.1)
+ jekyll-theme-time-machine (= 0.1.1)
+ jekyll-titles-from-headings (= 0.5.1)
+ jemoji (= 0.10.1)
+ kramdown (= 1.17.0)
+ liquid (= 4.0.0)
+ listen (= 3.1.5)
+ mercenary (~> 0.3)
+ minima (= 2.5.0)
+ nokogiri (>= 1.8.2, < 2.0)
+ rouge (= 2.2.1)
+ terminal-table (~> 1.4)
+ github-pages-health-check (1.8.1)
+ addressable (~> 2.3)
+ dnsruby (~> 1.60)
+ octokit (~> 4.0)
+ public_suffix (~> 2.0)
+ typhoeus (~> 1.3)
+ html-pipeline (2.10.0)
+ activesupport (>= 2)
+ nokogiri (>= 1.4)
+ http_parser.rb (0.6.0)
+ i18n (0.9.5)
+ concurrent-ruby (~> 1.0)
+ jekyll (3.7.4)
+ addressable (~> 2.4)
+ colorator (~> 1.0)
+ em-websocket (~> 0.5)
+ i18n (~> 0.7)
+ jekyll-sass-converter (~> 1.0)
+ jekyll-watch (~> 2.0)
+ kramdown (~> 1.14)
+ liquid (~> 4.0)
+ mercenary (~> 0.3.3)
+ pathutil (~> 0.9)
+ rouge (>= 1.7, < 4)
+ safe_yaml (~> 1.0)
+ jekyll-avatar (0.6.0)
+ jekyll (~> 3.0)
+ jekyll-coffeescript (1.1.1)
+ coffee-script (~> 2.2)
+ coffee-script-source (~> 1.11.1)
+ jekyll-commonmark (1.2.0)
+ commonmarker (~> 0.14)
+ jekyll (>= 3.0, < 4.0)
+ jekyll-commonmark-ghpages (0.1.5)
+ commonmarker (~> 0.17.6)
+ jekyll-commonmark (~> 1)
+ rouge (~> 2)
+ jekyll-default-layout (0.1.4)
+ jekyll (~> 3.0)
+ jekyll-feed (0.11.0)
+ jekyll (~> 3.3)
+ jekyll-gist (1.5.0)
+ octokit (~> 4.2)
+ jekyll-github-metadata (2.9.4)
+ jekyll (~> 3.1)
+ octokit (~> 4.0, != 4.4.0)
+ jekyll-mentions (1.4.1)
+ html-pipeline (~> 2.3)
+ jekyll (~> 3.0)
+ jekyll-optional-front-matter (0.3.0)
+ jekyll (~> 3.0)
+ jekyll-paginate (1.1.0)
+ jekyll-readme-index (0.2.0)
+ jekyll (~> 3.0)
+ jekyll-redirect-from (0.14.0)
+ jekyll (~> 3.3)
+ jekyll-relative-links (0.5.3)
+ jekyll (~> 3.3)
+ jekyll-remote-theme (0.3.1)
+ jekyll (~> 3.5)
+ rubyzip (>= 1.2.1, < 3.0)
+ jekyll-sass-converter (1.5.2)
+ sass (~> 3.4)
+ jekyll-seo-tag (2.5.0)
+ jekyll (~> 3.3)
+ jekyll-sitemap (1.2.0)
+ jekyll (~> 3.3)
+ jekyll-swiss (0.4.0)
+ jekyll-theme-architect (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-cayman (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-dinky (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-hacker (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-leap-day (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-merlot (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-midnight (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-minimal (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-modernist (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-primer (0.5.3)
+ jekyll (~> 3.5)
+ jekyll-github-metadata (~> 2.9)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-slate (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-tactile (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-time-machine (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-titles-from-headings (0.5.1)
+ jekyll (~> 3.3)
+ jekyll-watch (2.1.2)
+ listen (~> 3.0)
+ jemoji (0.10.1)
+ gemoji (~> 3.0)
+ html-pipeline (~> 2.2)
+ jekyll (~> 3.0)
+ just-the-docs (0.1.6)
+ jekyll (~> 3.3)
+ rake (~> 10.0)
+ kramdown (1.17.0)
+ liquid (4.0.0)
+ listen (3.1.5)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ ruby_dep (~> 1.2)
+ mercenary (0.3.6)
+ mini_portile2 (2.4.0)
+ minima (2.5.0)
+ jekyll (~> 3.5)
+ jekyll-feed (~> 0.9)
+ jekyll-seo-tag (~> 2.1)
+ minitest (5.11.3)
+ multipart-post (2.0.0)
+ nokogiri (1.10.1)
+ mini_portile2 (~> 2.4.0)
+ octokit (4.13.0)
+ sawyer (~> 0.8.0, >= 0.5.3)
+ pathutil (0.16.2)
+ forwardable-extended (~> 2.6)
+ public_suffix (2.0.5)
+ rake (10.5.0)
+ rb-fsevent (0.10.3)
+ rb-inotify (0.10.0)
+ ffi (~> 1.0)
+ rouge (2.2.1)
+ ruby-enum (0.7.2)
+ i18n
+ ruby_dep (1.5.0)
+ rubyzip (1.2.2)
+ safe_yaml (1.0.4)
+ sass (3.7.3)
+ sass-listen (~> 4.0.0)
+ sass-listen (4.0.0)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ sawyer (0.8.1)
+ addressable (>= 2.3.5, < 2.6)
+ faraday (~> 0.8, < 1.0)
+ terminal-table (1.8.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ thread_safe (0.3.6)
+ typhoeus (1.3.1)
+ ethon (>= 0.9.0)
+ tzinfo (1.2.5)
+ thread_safe (~> 0.1)
+ unicode-display_width (1.4.1)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ github-pages
+ just-the-docs
+ tzinfo-data
+
+BUNDLED WITH
+ 2.0.1
diff --git a/docs/_config.yml b/docs/_config.yml
new file mode 100644
index 0000000..41fb22d
--- /dev/null
+++ b/docs/_config.yml
@@ -0,0 +1,42 @@
+# Welcome to Jekyll!
+#
+# This config file is meant for settings that affect your whole blog, values
+# which you are expected to set up once and rarely edit after that. If you find
+# yourself editing this file very often, consider using Jekyll's data files
+# feature for the data you need to update frequently.
+#
+# For technical reasons, this file is *NOT* reloaded automatically when you use
+# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
+
+# Site settings
+# These are used to personalize your new site. If you look in the HTML files,
+# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
+# You can create any custom variable you would like, and they will be accessible
+# in the templates via {{ site.myvariable }}.
+title: OAuth2_Proxy
+description: >- # this means to ignore newlines until "baseurl:"
+ OAuth2_Proxy documentation site
+baseurl: "" # the subpath of your site, e.g. /blog
+url: "" # the base hostname & protocol for your site, e.g. http://example.com
+
+# Build settings
+markdown: kramdown
+remote_theme: pmarsceill/just-the-docs
+search_enabled: true
+
+# Aux links for the upper right navigation
+aux_links:
+ "OAuth2_Proxy on GitHub":
+ - "https://github.com/pusher/oauth2_proxy"
+
+# Exclude from processing.
+# The following items will not be processed, by default. Create a custom list
+# to override the default setting.
+# exclude:
+# - Gemfile
+# - Gemfile.lock
+# - node_modules
+# - vendor/bundle/
+# - vendor/cache/
+# - vendor/gems/
+# - vendor/ruby/
diff --git a/docs/assets/js/search-data.json b/docs/assets/js/search-data.json
new file mode 100644
index 0000000..50a4b9f
--- /dev/null
+++ b/docs/assets/js/search-data.json
@@ -0,0 +1,12 @@
+---
+---
+{
+ {% for page in site.html_pages %}"{{ forloop.index0 }}": {
+ "id": "{{ forloop.index0 }}",
+ "title": "{{ page.title | xml_escape }}",
+ "content": "{{ page.content | markdownify | strip_html | xml_escape | remove: 'Table of contents' | strip_newlines | replace: '\', ' ' }}",
+ "url": "{{ page.url | absolute_url | xml_escape }}",
+ "relUrl": "{{ page.url | xml_escape }}"
+ }{% if forloop.last %}{% else %},
+ {% endif %}{% endfor %}
+}