Setup
1. Register an app in Okta
- In the Okta Admin Console, go to Applications -> Applications -> Create App Integration.
- Choose OIDC - OpenID Connect as the sign-in method and Web Application as the application type.
- Set a Sign-in redirect URI of
https://thoras.yourcompany.com/oauth2/callback. - Under Assignments, grant access to the group(s) that should be able to reach the dashboard (or “Everyone” for org-wide access).
- Once created, note the Client ID and Client secret from the app’s
General tab, and your Okta domain (e.g.
dev-133337.okta.com) from the top of the Admin Console.
https://<your-okta-domain>/oauth2/default if you’re using
the default custom authorization server,
https://<your-okta-domain>/oauth2/<auth-server-id> if you’ve configured a
custom authorization server under Security -> API, or
https://<your-okta-domain> if you’re using the org authorization server.
See oauth2-proxy’s own Okta walkthrough (under the OpenID Connect provider,
which is what Okta uses):
OpenID Connect - Okta,
and Okta’s writeup of the same integration:
Add Auth to Any App with OAuth2 Proxy.
2. Create the Kubernetes secret
The sidecar needs three values, read from a Kubernetes Secret you manage rather than inlined invalues.yaml. The chart never generates these:
Generate the cookie secret with:
kubectl
when using --from-literal):
3. Switch the chart into OIDC mode
Invalues.yaml, set thorasDashboard.auth.mode: oidc and fill in the OIDC
block:
Field notes
provider:oidc. oauth2-proxy has no Okta-specific provider; Okta is served by the generic OpenID Connect provider, which is what oauth2-proxy’s own Okta example uses.oktais not a valid value and the sidecar will fail to start.issuerURL: points at your Okta authorization server. Usehttps://<your-okta-domain>/oauth2/defaultfor the default custom authorization server,https://<your-okta-domain>/oauth2/<auth-server-id>for another custom one, orhttps://<your-okta-domain>for the org authorization server (see the Warning above).redirectURL: must be the real external hostname of the dashboard, over HTTPS, and must exactly match the sign-in redirect URI registered on the Okta app.emailDomains: restricts login to your org’s email domain(s). Use["*"]to allow any authenticated user.existingSecret.secretName: points at the Secret you created in step 2.
4. Deploy and verify
helm upgradethe release with the updatedvalues.yaml.- Confirm the dashboard pod comes up healthy, and check the sidecar logs if
something goes wrong:
- Visit the dashboard URL. You should be redirected to your identity provider’s login page, and land back on the dashboard after authenticating.
- If the redirect fails or loops, double-check that
redirectURLexactly matches a redirect URI registered on your identity provider’s app, and thatissuerURLis correct.
Exposing the sidecar externally
The chart’s built-in oauth2-proxy sidecar owns the dashboard’scontainerPort,
so the existing thorasDashboard Service already routes external traffic
through the auth check. No service.targetPort override is needed.
Expose the Service using whichever mechanism the chart already supports:
Ingress
ingressClassName/parentRefs to match your cluster’s actual Ingress
controller or Gateway, and terminate TLS there (or upstream at a
cert-manager-issued Certificate bound to it). Once DNS for
thoras.yourcompany.com resolves and a valid TLS cert is issued, visiting the
dashboard URL should trigger the login flow described above.

