CVQuesty
07/01/2026, 1:26 PMThreat model
If VoxForge is the r10k/g10k source of truth, open self-registration as puppetlabs / saz / etc. is a supply-chain MITM risk. Publish rights are now tied to proven identity, not "I picked that username."
Create a GitHub OAuth App with that callback URL, then add the secrets to <filename/location> Until then, github_enabled is false and only password login shows (admin-only registration mode).
Validation / authorization
1. Forge username = GitHub login on OAuth (no arbitrary namespace spoofing).
2. can_publish only after GitHub verification (or admin grant).
3. Authorized namespaces — default = GitHub login; extras via:
• Admin grant in Members UI, or
• POST /api/members/claim-namespace with org membership / push access to namespace/repo.
4. Catalog mirrors (forge-sync authors): is_mirror=true, no password, cannot log in or publish until claimed with matching GitHub login. On <http://questy.org|questy.org> now: 493 mirrors, 1 publisher (admin).
5. POST /v3/releases rejects anyone who isn't active + authorized for that owner namespace; claiming a mirror-owned module reassigns ownership to the verified member.
Ops note
Wire GitHub OAuth credentials on the server when you want community self-service. Until then, only admin can publish; everyone else in the catalog is a read-only mirror identity, which is the safe default for a public forge.
I don't expect my stuff to be used directly, but it's a PoC that works and gives us a practical example of a way to keep our forge out of a MITM vulnerable situation