feat(local): run the anonymous surface with no WAF captcha #6
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/nuget-cli-home"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The local overlay turned the anonymous surface off entirely, so
verification, the Redis-backed enforcement counters and the ban path went
untested locally and development against them was blocked.
Turn it on with captcha.provider "none". The real challenge is AWS WAF's
CAPTCHA action in front of POST /api/v1/verify/mint, and there is no
CloudFront in front of a k3d cluster; under "none" challengeView returns
nil, so GET /api/v1/human-session omits the challenge key and the frontend
never loads the awswaf.com SDK or holds a token. No Go source change: the
escape hatch already existed.
That combination is legal only with no edge secret set -- RequireCaptcha
treats provider "none" and an edge secret as a matched pair -- so edge.secret
stays empty and the README says not to create a gbb-edge Secret. The sealing
key comes from a gbb-captcha Secret the base StatefulSet already projects
with optional: true, rather than inline, since a ConfigMap is not a secret.
The https GBB_PUBLIC_ORIGIN check and the Secure, __Host- prefixed cookies
are satisfied without touching code: TLS terminates at the edge Traefik, so
the browser is on https and only the inward hop is plain HTTP. For the same
reason auth.cookie_secure goes back to true and the ingress keeps the web
entrypoint.
Redis becomes a hard requirement, pointed at the same instance and db the
gateway already uses -- the gateway revokes sessions by deleting keys the
server wrote, and split instances fail silently.
GBB_ADMIN_GROUP is mandatory under captcha.enabled and is not inert: it
switches requireAdmin to Authelia forward-auth and retires POST
/api/v1/session and the admin token routes, and POST /api/v1/builds moves
behind requireVerified. Documented rather than worked around.
TestLocalOverlayConfigMapParses supplies the key via t.Setenv, matching how
it already handles the Secret-supplied DSN, and now pins provider "none", an
absent edge secret and both Require gates so the overlay cannot drift into
the combination that refuses at startup.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com