feat(security): upstream MCP request authentication and table access #14

Merged
james.maes merged 1 commits from feature/kof22-mcp-canonical into main 2026-11-05 12:47:04 +00:00
Owner

Move KOF22's MCP HTTP authentication and session-aware table visibility changes into the owning main line. Requests use the authenticated principal, and table discovery/schema responses respect the current session's permissions.

Migrate the build to the published QQQ 4.1.0-RC.21 BOM while preserving the current upstream release caller. This incorporates the necessary build migration from #12 without its stale CI deletion. Existing PRs remain open until this integration is merged.

Validation: production and test sources compiled against published QQQ JARs (test-compile BUILD SUCCESS; no tests executed locally). Canonical repository CI is the test gate. A published mainline artifact will replace the KOF22 embedded source.

Move KOF22's MCP HTTP authentication and session-aware table visibility changes into the owning main line. Requests use the authenticated principal, and table discovery/schema responses respect the current session's permissions. Migrate the build to the published QQQ 4.1.0-RC.21 BOM while preserving the current upstream release caller. This incorporates the necessary build migration from #12 without its stale CI deletion. Existing PRs remain open until this integration is merged. Validation: production and test sources compiled against published QQQ JARs (test-compile BUILD SUCCESS; no tests executed locally). Canonical repository CI is the test gate. A published mainline artifact will replace the KOF22 embedded source.
james.maes added 1 commit 2026-11-05 11:35:18 +00:00
feat(security): authenticate MCP HTTP requests and enforce table access
QRun-IO/ci-policy: ci / fork-guard (pull_request) Skipped
QRun-IO/ci-policy: native / fork-deny (pull_request) Skipped
QRun-IO/ci-policy: native / dotnet-0 (pull_request) Skipped
Shared Java Maven CI / secrets (push) Successful in 37s
QRun-IO/ci-policy: ci / Scoped workflow [workflow f1d46718955078331817c6206b822a94bc7d769f] (pull_request) Successful in 13s
QRun-IO/ci-policy: native / native-result (pull_request) Successful in 7s
QRun-IO/ci-policy: ci / head-profile (pull_request) Skipped
QRun-IO/ci-policy: ci / repository-policy (pull_request) Skipped
QRun-IO/ci-policy: ci / application-template-0 (pull_request) Skipped
QRun-IO/ci-policy: ci / gradle-1 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-core-2-head (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-3 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-3-head (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-4 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-frontend-browser-5 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-6-head (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-7 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-7-head (pull_request) Skipped
QRun-IO/ci-policy: ci / node-8 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-9 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-10 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-playwright-11 (pull_request) Skipped
QRun-IO/ci-policy: ci / repository-policy-12 (pull_request) Skipped
QRun-IO/ci-policy: ci / source-config-13 (pull_request) Skipped
QRun-IO/ci-policy: ci / source-config-14 (pull_request) Skipped
QRun-IO/ci-policy: ci / android-0 (pull_request) Skipped
QRun-IO/ci-policy: ci / original-business (pull_request) Skipped
QRun-IO/ci-policy: ci / original-mcp (pull_request) Skipped
QRun-IO/ci-policy: ci / original-voyage (pull_request) Skipped
QRun-IO/ci-policy: ci / original-cli (pull_request) Skipped
QRun-IO/ci-policy: ci / not-enrolled (pull_request) Skipped
QRun-IO/ci-policy: ci / shared-pipeline (pull_request) Skipped
QRun-IO/ci-policy: Shared Java Maven CI / secrets (pull_request) Successful in 31s
Shared Java Maven CI / verify (push) Successful in 1m13s
Shared Java Maven CI / gate (push) Successful in 20s
qrun-release / release (push) Successful in 58m6s
qrun-release / postpublish (push) Skipped
QRun-IO/ci-policy: Shared Java Maven CI / verify (pull_request) Successful in 2m3s
QRun-IO/ci-policy: Shared Java Maven CI / gate (pull_request) Successful in 25s
QRun-IO/ci-policy: ci / java-maven-6 (pull_request) Successful in 1h0m24s
QRun-IO/ci-policy: ci / ci-result (pull_request) Successful in 10s
ed57dd854a
Add a bearer-token authentication filter and an HTTP-principal session
provider so MCP requests run as the authenticated principal, and gate the
table list/schema tools and resources through a shared TableAccess check.
Add McpHttpSecurityTest and adapt the existing test utilities.

Build against the published QQQ 4.1 BOM (4.1.0-RC.21), add the servlet API
(provided) and the test-scope Javalin/RDBMS/Postgres/H2/Testcontainers
dependencies the security test needs, and run surefire under UTC.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
james.maes merged commit b04c73be47 into main 2026-11-05 12:47:04 +00:00
Sign in to join this conversation.