Hi! I've been using OpenVox View and noticed that all API endpoints are publicly accessible without any authentication. For environments exposed beyond a trusted network — especially the Puppet CA endpoints that allow signing and revoking certificates — this is a security concern.
I've implemented authentication support in my fork and would like to contribute it upstream if there's interest. Here's an overview of what it covers:
Local User Authentication
- SQLite-based user store (using
modernc.org/sqlite — pure Go, no CGO)
- Short-lived JWT access tokens + long-lived refresh tokens with rotation
--create-admin CLI flag for bootstrapping the first user
- Configurable via
auth.enabled toggle — existing deployments are unaffected
SAML 2.0 SSO (EntraID / ADFS)
- SP-initiated SSO using
crewjam/saml
- Auto-provisioning of users on first SAML login
- Hourly IdP metadata refresh for certificate rotation
--generate-saml-cert CLI flag for SP certificate generation
- Coexists with local auth (break-glass admin account)
User Management UI
- Admin-only page for managing users (create, edit, delete)
- Role-based access control via
is_admin flag
- SAML user profiles shown as read-only (managed by IdP)
- Self-delete and self-demote guards
- i18n support (en-US, de-DE)
Security Hardening
- Admin-only middleware on user management endpoints
- Configurable CORS policy (default: no CORS headers)
- IDP-initiated SAML disabled (prevents assertion replay)
- SAML cookie with Secure + HttpOnly flags
- Password minimum length enforced on create and update
- Rate limiting on login endpoint
Documentation
- ADR documents for each feature (ADR-001 through ADR-004)
- Configuration documentation with EntraID/ADFS setup guides
- Manual test plan
The auth.enabled toggle defaults to false, so this is fully backwards-compatible. No changes to existing functionality when auth is disabled.
I'm happy to split this into smaller PRs if that's preferred (e.g., local auth first, then SAML, then UI). Let me know if this is something you'd be interested in merging, and if there are any concerns about the approach.
Hi! I've been using OpenVox View and noticed that all API endpoints are publicly accessible without any authentication. For environments exposed beyond a trusted network — especially the Puppet CA endpoints that allow signing and revoking certificates — this is a security concern.
I've implemented authentication support in my fork and would like to contribute it upstream if there's interest. Here's an overview of what it covers:
Local User Authentication
modernc.org/sqlite— pure Go, no CGO)--create-adminCLI flag for bootstrapping the first userauth.enabledtoggle — existing deployments are unaffectedSAML 2.0 SSO (EntraID / ADFS)
crewjam/saml--generate-saml-certCLI flag for SP certificate generationUser Management UI
is_adminflagSecurity Hardening
Documentation
The
auth.enabledtoggle defaults tofalse, so this is fully backwards-compatible. No changes to existing functionality when auth is disabled.I'm happy to split this into smaller PRs if that's preferred (e.g., local auth first, then SAML, then UI). Let me know if this is something you'd be interested in merging, and if there are any concerns about the approach.