Skip to content

feat: gate dashboard with HTTP basic auth (drop OIDC)#12

Merged
Taure merged 1 commit into
mainfrom
feat/dashboard-basic-auth
May 27, 2026
Merged

feat: gate dashboard with HTTP basic auth (drop OIDC)#12
Taure merged 1 commit into
mainfrom
feat/dashboard-basic-auth

Conversation

@Taure
Copy link
Copy Markdown
Owner

@Taure Taure commented May 27, 2026

Swaps the dashboard's OIDC login for a single strong username/password from env, so the live board can be exposed with minimal setup — no provider, no consent screen, no redirect URIs. The browser's native auth prompt is the login.

What changed

  • triagebot_dashboard_auth — HTTP Basic auth against TRIAGEBOT_DASHBOARD_USER / TRIAGEBOT_DASHBOARD_PASSWORD. Constant-time compare (sha256 + crypto:hash_equals). Closed by default: denies everything (503) when unset, so it's never accidentally public. Gates both the view routes and the HITL controls.
  • Removed triagebot_oidc_config, triagebot_auth_controller, the /auth/:provider/* routes, and the nova_auth / nova_auth_oidc / oidcc / jose deps — which also drops the nova_auth fork pin and the whole duplicate-module workaround.
  • Tests rewritten for the basic-auth gate.

Verified on a running release

/health public (200) · / no creds → 401 + WWW-Authenticate: Basic · wrong creds → 401 · correct creds → 200 dashboard · run detail + live SSE stream work behind the gate · unauthenticated SSE → 401. fmt/xref/dialyzer/ct all clean.

Run it

TRIAGEBOT_DASHBOARD_USER=... TRIAGEBOT_DASHBOARD_PASSWORD=... <other env> \
  _build/default/rel/triagebot/bin/triagebot foreground

Note: this supersedes the OIDC gate shipped in v0.1.10. The upstream nova_auth fix (novaframework/nova_auth#11) is no longer needed by triagebot, but remains a valid upstream cleanup.

Replace the OIDC login with a single strong username/password from
TRIAGEBOT_DASHBOARD_USER / TRIAGEBOT_DASHBOARD_PASSWORD, so the live
dashboard can be exposed with minimal setup (no provider, no consent
screen - the browser's native prompt is the login).

- triagebot_dashboard_auth: Basic auth, constant-time compare, closed by
  default (503 when unset, never accidentally open); gates view + HITL
- remove triagebot_oidc_config, triagebot_auth_controller, the /auth
  routes, and the nova_auth / nova_auth_oidc / oidcc / jose deps (drops
  the nova_auth fork pin and the duplicate-module workaround entirely)
- tests rewritten for the basic-auth gate
@github-actions
Copy link
Copy Markdown

🔴 Code Coverage — 20.3%

47 of 231 lines covered.


✅ ELP Lint

No diagnostics.

@Taure Taure merged commit cb97174 into main May 27, 2026
16 checks passed
@Taure Taure deleted the feat/dashboard-basic-auth branch May 27, 2026 19:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant