Forward Auth is a beta feature. To have it enabled for your project, reach out to support
Overview
Forward Auth puts an OAuth sign-on in front of your application. When it is enabled on a service, every request must be authenticated through your sign-on provider before it ever reaches your application — unauthenticated users are redirected to log in first. This is handled by an oauth2-proxy that runs in your cluster. You configure it inInfrastructure -> Cluster -> Config with with your provider credentials. Once configured, you can enable it for individual services.
We recommend Forward Auth for internal apps and vibe-coded apps where you want a simple, robust login gate without building and maintaining authentication into the application itself.
Supported providers
Forward Auth supports the following sign-on providers:- GitHub
- Okta
- Microsoft Entra ID
- ADFS
- GitLab
- Bitbucket
- DigitalOcean
- Keycloak (OIDC)
- Login.gov
- Nextcloud
- Generic OIDC (for any provider that speaks OpenID Connect)
Enabling Forward Auth on a cluster
Once the feature has been enabled for your project by support, go to Infrastructure → Config. There you can enable Forward Auth, pick your sign-on provider, and enter its credentials:- Provider — the sign-on provider to authenticate against (see Supported providers).
- Client ID — the OAuth2 client ID from your provider.
- Client Secret — the OAuth2 client secret.
- Issuer URL — the issuer URL for your provider. (for example
https://accounts.google.com)
Enabling Forward Auth on an application
With Forward Auth configured on the cluster, open an application and go to Services → Networking. A new Forward Auth toggle is available on web services. Enabling it makes that application authenticated — all incoming traffic is routed through the login flow before reaching your app.Configuring it in porter.yaml
You can also enable it declaratively in your porter.yaml by adding forwardAuth: true to a service:
Identifying the user in your application
Once a request is authenticated, the proxy forwards the authenticated user’s identity to your application as request headers. Your app can read these to tell users apart — for example, to scope data per user or drive per-user behavior:X-Auth-Request-User— the authenticated user’s ID.X-Auth-Request-Email— the authenticated user’s email.

