You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -172,6 +172,12 @@ This release **tightens production defaults** and adds **defense-in-depth contro
172
172
***SSO callback session binding** - state is bound to browser session marker and callback requires matching session binding (O-14)
173
173
***OAuth authorize/status ownership checks** - gateway visibility/team/owner checks now enforced consistently on authorize/status endpoints (O-16)
174
174
***OAuth fetch-tools access hardening** - `/oauth/fetch-tools/{gateway_id}` now reuses centralized gateway access enforcement and fails closed for non-admin null-scope contexts, with targeted regression coverage (O-15)
175
+
***OAuth config secrets now protected at rest across service CRUD** - sensitive `oauth_config` fields are encrypted on gateway/server/A2A create+update paths, with backward-compatible handling for already-encrypted values (A-02, O-10, O-17)
176
+
***Server OAuth read masking parity** - server read/list schema responses now mask sensitive OAuth keys the same way as gateway/A2A responses (A-05)
177
+
***Failed-login timing hardening** - email auth now applies dummy Argon2 verification on early failures plus a configurable minimum failed-login response floor (A-06)
178
+
***Admin gateway-test SSRF validation** - `/admin/gateways/test` now validates user-supplied target URLs before outbound requests (S-02)
179
+
***LLM chat connect SSRF validation** - `/llmchat/connect` now validates user-supplied MCP server URLs before session setup (S-03)
180
+
***OAuth DCR credential persistence hardening** - DCR-populated gateway credentials are protected before persisting to `oauth_config` (A-02, O-17)
175
181
***JWT rich-token teams semantics** - `_create_jwt_token` now preserves explicit `teams=None` as JSON `null` while still allowing omitted teams claims, restoring deterministic admin-token scope behavior for fail-closed ownership checks
176
182
***Token revocation fail-open documented** - security-features and securing docs updated to reflect availability trade-off (U-05)
177
183
***Health diagnostics auth consistency** - `/health/security` now uses standard bearer JWT validation flow.
@@ -196,6 +202,10 @@ This release **tightens production defaults** and adds **defense-in-depth contro
196
202
***C-28**: Resource event subscriptions now enforce per-subscriber visibility scoping
197
203
***C-29**: MCP resource subscription creation now enforces visibility checks
198
204
***C-15**: Token scoping defaults to deny for unmapped API paths
205
+
***A-02 / O-10 / O-17**: OAuth config sensitive keys are now encrypted at service-layer persistence boundaries for gateway/server/A2A, including DCR credential writes
206
+
***A-05**: Server read/list responses now apply OAuth secret masking parity with gateway/A2A
207
+
***A-06**: Email auth failed-login paths now include dummy Argon2 verification and a configurable response-time floor
208
+
***S-02 / S-03**: Admin gateway test and LLM chat connect now validate outbound target URLs before network calls
199
209
***C-05**: JSON-RPC tool execution now requires `tools.execute` for both `tools/call` and backward-compatible direct tool method invocation
200
210
***C-18**: Get-by-ID handlers, including `GET /resources/{resource_id}/info`, now enforce scoped ownership checks in addition to middleware controls
201
211
***C-19**: All root management endpoints now require `admin.system_config`
@@ -214,6 +224,7 @@ This release **tightens production defaults** and adds **defense-in-depth contro
214
224
* Updated `docker-compose.yml` with transport feature flags and local SSRF overrides
215
225
* Updated Helm chart `values.yaml`, `values.schema.json`, and `README.md` with new SSRF and transport settings
216
226
* Updated `docs/config.schema.json` with new settings, defaults, and `sso_generic_jwks_uri`
227
+
* Added Alembic backfill migration to protect existing plaintext OAuth config secrets in gateway/server/A2A rows
217
228
* Protocol version bumped to `2025-11-25` in configuration schema
| Admin Home | Navigate to `$GW_URL/admin`| Access admin UI | Dashboard displayed | ☐ | Visual interface |
339
339
| Create Tool (Form) |`curl -X POST $GW_URL/admin/tools -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" -H "Content-Type: application/x-www-form-urlencoded" -d 'name=admin_tool&url=https://api.example.com/v1/endpoint&description=Admin created tool&integrationType=REST&requestType=GET'`| Create via form |`{"message": "Tool registered successfully!", "success": true}`| ☐ | Form submission |
340
340
| Create Resource (Form) |`curl -X POST $GW_URL/admin/resources -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" -H "Content-Type: application/x-www-form-urlencoded" -d 'uri=admin/test&name=admin_resource&description=Created via admin&mimeType=text/plain&content=Admin content'`| Create via form | 303 redirect | ☐ | Admin form endpoint |
341
-
| Test Gateway Connectivity |`curl -X POST $GW_URL/admin/gateways/test -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" -H "Content-Type: application/json" -d '{"base_url": "http://localhost:8101", "path": "/health", "method": "GET", "headers": {}, "body": null}'`| Test connection | Returns status_code, latency_ms, and body | ☐ | Connectivity test |
341
+
| Test Gateway Connectivity |`curl -X POST $GW_URL/admin/gateways/test -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" -H "Content-Type: application/json" -d '{"base_url": "https://api.example.com", "path": "/health", "method": "GET", "headers": {}, "body": null}'`| Test connection | Returns status_code, latency_ms, and body | ☐ | Connectivity test |
342
+
343
+
`/admin/gateways/test` enforces SSRF URL validation. Under strict defaults, localhost/private targets are blocked unless explicitly allowed (for example via `SSRF_ALLOWED_NETWORKS` or local dev overrides).
Copy file name to clipboardExpand all lines: docs/docs/using/clients/llm-chat.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -184,7 +184,7 @@ The LLM Chat functionality is powered by the following REST API endpoints:
184
184
{
185
185
"user_id": "some-string",
186
186
"server": {
187
-
"url": "http://localhost:8000/mcp",
187
+
"url": "https://mcp.example.com/mcp",
188
188
"transport": "streamable_http",
189
189
"auth_token": "optional-jwt-token"
190
190
},
@@ -197,6 +197,8 @@ The LLM Chat functionality is powered by the following REST API endpoints:
197
197
}
198
198
```
199
199
200
+
`/llmchat/connect` validates user-supplied server URLs with SSRF protections. Under strict defaults, localhost/private addresses are rejected unless explicitly allowed (for example via `SSRF_ALLOWED_NETWORKS` or local development overrides).
0 commit comments