Skip to content

alphagov/authenticating-proxy

Repository files navigation

GOV.UK Authenticating Proxy

App to add authentication to the draft version of GOV.UK, so that only users with a signon account - or a valid JSON web token (JWT) - can access it.

This is a Rails application that proxies requests to an upstream service, first performing authentication using gds-sso to ensure that only authenticated users are able to view the site. It sets an X-GOVUK-AUTHENTICATED-USER header so that the upstream service can identify the user.

The application also supports bypassing authentication via a valid JWT token. If the URL being requested includes a token querystring containing a valid token encoded with the value in the JWT_AUTH_SECRET environment variable, and that token contains a sub key, the value of that key is passed upstream in the GOVUK_AUTH_BYPASS_ID header. NB, the sub (or "subject") key is one of the reserved claims of a JWT.

If a user is authenticated using gds-sso and a JWT token is also provided, both sets of information are passed upstream. It is up to the upstream application how to handle these cases.

Some of the thinking behind this is documented in RFC 13.

Technical documentation

Running the app

In GOV.UK Docker, GOVUK_UPSTREAM_URI defaults to government-frontend. This means that, when you request authenticating-proxy.dev.gov.uk, it should behave the same as requesting government-frontend.dev.gov.uk.

Running the test suite

bundle exec rake

Further documentation

Check the docs/ directory.

Licence

MIT License