Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
6eb1749
feat(go-validate): Go fast-path sidecar for the /validate hot path
aarora79 Aug 18, 2026
8873c44
feat(go-validate): wire sidecar into docker-compose so build_and_run …
aarora79 Aug 18, 2026
5c9176e
fix(go-validate): make fallback verbatim + audience-mismatch defers t…
aarora79 Aug 18, 2026
2decd71
feat(go-validate): group->scope parity + per-hop internal tokens
aarora79 Aug 18, 2026
61c252b
fix(go-validate): neutralize phantom request body on /validate subreq…
aarora79 Aug 18, 2026
5845e9f
test(go-validate): regression + unit tests
aarora79 Aug 18, 2026
159e14f
test(bench): add pingmcp fast MCP upstream for end-to-end /validate l…
aarora79 Aug 19, 2026
75567e5
feat(go-validate): wire the sidecar into ECS (Terraform), EKS (Helm),…
aarora79 Aug 19, 2026
caf4cbd
test(go-validate,pingmcp): unit tests for crypto, minting, handler, M…
aarora79 Aug 19, 2026
cdc68c4
feat(go-validate): auto-derive JWKS/issuer; surface config on all thr…
aarora79 Aug 19, 2026
a5e1189
feat(fast-path): single feature switch (validate_fast_path_enabled / …
aarora79 Aug 19, 2026
b725f19
docs(fast-path): explain how to set VALIDATE_AUDIENCE/ISSUER/JWKS
aarora79 Aug 19, 2026
83534c9
feat(fast-path): multi-issuer/audience parity, drop 'account', loud f…
aarora79 Aug 19, 2026
e637e02
feat(fast-path): add Cognito verifier (multi-provider fast path)
aarora79 Aug 19, 2026
54bccf5
docs(fast-path): document Cognito support in the fast-path reference
aarora79 Aug 19, 2026
7813cf3
fix(ecs): grant registry exec role read on embeddings-idp-secret
aarora79 Aug 19, 2026
f9b1fa4
fix(fast-path): trust the Amazon DocumentDB CA for the scope resolver…
aarora79 Aug 20, 2026
6fb3fe8
fix(fast-path): fetch DocumentDB CA bundle at build time (not vendored)
aarora79 Aug 20, 2026
1411d54
chore(fast-path): use ECR Public mirror for the golang build base
aarora79 Aug 20, 2026
48dc8b9
fix(fast-path): use SCRAM-SHA-1 for DocumentDB auth (SHA-256 unsuppor…
aarora79 Aug 20, 2026
d9dcc71
feat(deploy): build+deploy the go-validate sidecar in scripts/deploy.sh
aarora79 Aug 20, 2026
8ea115e
fix(fast-path): pick SCRAM-SHA-1 from TLS signal when STORAGE_BACKEND…
aarora79 Aug 20, 2026
8261a91
feat(fast-path): add Entra and Okta verifiers (multi-provider)
aarora79 Aug 20, 2026
8e2799e
Merge remote-tracking branch 'origin/main' into feat/go-validate-fast…
aarora79 Aug 21, 2026
2d9c9fa
fix(ci): resolve helm nil-pointer, reserved-env-sync, and detect-secrets
aarora79 Aug 21, 2026
1632fdd
docs(fast-path): independent testing guide (e2e + stress + pingmcp)
aarora79 Aug 21, 2026
b6dcfaf
docs(fast-path): drop 'independent tester' phrasing from TESTING.md
aarora79 Aug 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -1915,3 +1915,37 @@ OPENBAO_ROLE=
# or let build_and_run.sh generate one. Do NOT reuse the old "dev-root-token"
# literal — the preflight validator rejects it.
OPENBAO_TOKEN=

# ---------------------------------------------------------------------------
# Go /validate fast-path sidecar (go-validate) - issue #1652, PR #1653
# ---------------------------------------------------------------------------
# nginx routes the /validate auth_request subrequest to this sidecar. It fast-paths
# the configured-IdP RS256 bearer path and reverse-proxies everything else to the
# Python auth-server, so it is a SAFE transparent proxy until the fast-path vars
# below are set. Leave VALIDATE_UPSTREAM_URL unset on deployments without the sidecar
# (Terraform/ECS, Helm, podman/prebuilt compose): /validate then defaults to the
# auth-server, i.e. unchanged behavior.
#
# Route /validate to the sidecar (docker-compose default). Set to
# http://auth-server:8888 to bypass the sidecar entirely.
# ENABLE/DISABLE SWITCH (docker-compose): this routes nginx /validate.
# http://go-validate:8899 -> fast path ON (route through the sidecar) [default]
# http://auth-server:8888 -> fast path OFF (bypass the sidecar, pure Python)
VALIDATE_UPSTREAM_URL=http://go-validate:8899
# JWKS endpoint the sidecar fetches signing keys from (must be reachable from the
# sidecar container). Auto-derived from KEYCLOAK_URL + KEYCLOAK_REALM when empty.
VALIDATE_JWKS_URL=
# Accepted token issuers - the `iss` claim. Leave empty to auto-derive the SAME
# three URLs Python accepts (external + internal + localhost realm), so browser-login
# AND service/M2M tokens both fast-path. Accepts a comma/space-separated LIST to
# override; a token whose iss matches ANY member is accepted (others -> Python).
VALIDATE_ISSUER=
# Accepted token audiences - the `aud` claim. Leave empty to auto-derive the SAME set
# Python accepts (KEYCLOAK_CLIENT_ID + KEYCLOAK_M2M_CLIENT_ID + "mcp-gateway"). Accepts
# a comma/space-separated LIST; a token whose aud contains ANY member is accepted.
# Do NOT use "account": it rides on every realm token and is refused as an audience
# (accepting it is a cross-client confused-deputy; Python rejects it too). A non-matching
# audience is deferred to Python, never a 401.
VALIDATE_AUDIENCE=
# JWKS cache refresh interval (seconds).
JWKS_REFRESH_SECONDS=300
8 changes: 7 additions & 1 deletion .github/workflows/release-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,18 @@ jobs:
include:
- service: auth-server
dockerfile: docker/Dockerfile.auth
context: .
- service: registry
dockerfile: docker/Dockerfile.registry
context: .
- service: mcpgw
dockerfile: docker/Dockerfile.mcp-server
context: .
extra_build_args: |-
SERVER_DIR=servers/mcpgw
- service: go-validate
dockerfile: go-validate/Dockerfile
context: go-validate

steps:
- name: Checkout code
Expand Down Expand Up @@ -86,7 +92,7 @@ jobs:
id: push
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
with:
context: .
context: ${{ matrix.context }}
file: ${{ matrix.dockerfile }}
push: true
platforms: linux/amd64,linux/arm64
Expand Down
Loading