Skip to content

Commit 5897031

Browse files
committed
Update roadmap
Signed-off-by: Mihai Criveti <[email protected]>
1 parent 7b733b6 commit 5897031

File tree

1 file changed

+128
-51
lines changed

1 file changed

+128
-51
lines changed

docs/docs/architecture/roadmap.md

Lines changed: 128 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -76,28 +76,6 @@ Allow choosing which MCP protocol version each virtual server uses.
7676

7777
---
7878

79-
## 🔐 Authentication & Identity
80-
81-
### 🧭 [#87 Epic: JWT Token Catalog with Per-User Expiry and Revocation](https://github.com/IBM/mcp-context-forge/issues/87)
82-
83-
???+ "Token Lifecycle Management"
84-
**Generate Tokens:** As a platform admin, I want to generate one-time API tokens so I can issue short-lived credentials.
85-
86-
**Revoke Tokens:** As a platform admin, I want to revoke tokens so I can disable exposed or obsolete tokens.
87-
88-
**API Token Management:** As a user or automation client, I want to list, create, and revoke tokens via API so I can automate credential workflows.
89-
90-
🧭 Epic: Per-Virtual-Server API Keys
91-
92-
???+ "Scoped Server Access"
93-
**Server-Scoped Keys:** As a platform admin, I want to create API keys tied to a specific virtual server so that credentials are limited in scope.
94-
95-
**Key Rotation & Revocation:** As a platform admin, I want to rotate or revoke a virtual server's API keys so I can maintain security without affecting other servers.
96-
97-
**API Management UI & API:** As a developer, I want to list, create, rotate, and revoke server API keys via the Admin UI and REST API so I can automate credential lifecycle for each virtual server.
98-
99-
---
100-
10179
## 📈 Observability & Telemetry
10280

10381
### 🧭 Epic: OpenTelemetry Tracing & Metrics Export
@@ -217,35 +195,9 @@ Allow choosing which MCP protocol version each virtual server uses.
217195

218196
---
219197

220-
### 🧭 Epic: LDAP & External Identity Integration
221-
222-
???+ "Corporate Directory Auth"
223-
**LDAP Authentication:** As a platform admin, I want to configure LDAP/Active Directory so that users authenticate with corporate credentials.
224-
225-
**Group Sync:** As a platform admin, I want to sync LDAP/AD groups into gateway roles so I can manage permissions via directory groups.
226-
227-
**SSO Integration:** As a platform admin, I want to support SAML/OIDC so that teams can use existing single sign-on.
228-
229-
---
230-
231-
### 🧭 Epic: Role-Based Access Control (User/Team/Global Scopes)
232-
233-
???+ "RBAC & Scoping"
234-
**User-Level Scopes:** As a platform admin, I want to assign permissions at the individual user level so that I can grant fine-grained access.
235-
236-
**Team-Level Scopes:** As a platform admin, I want to define teams and grant scopes to teams so that I can manage permissions for groups of users.
237-
238-
**Global Scopes:** As a platform admin, I want to set global default scopes so that baseline permissions apply to all users.
239-
240-
241-
Here are the new markdown blocks for the two requested features:
242-
243-
---
244198

245199
## 🛠️ Developer Experience
246200

247-
Absolutely! Here are the two new features in your exact `mkdocs-material` + `admonition` format:
248-
249201
---
250202

251203
### 🧭 Epic: Chrome MCP Plugin Integration
@@ -255,7 +207,6 @@ Absolutely! Here are the two new features in your exact `mkdocs-material` + `adm
255207
As a developer, I want a Chrome extension to manage MCP configurations, servers, and connections directly from the browser
256208
**So that** I can reduce dependency on local CLI tools and improve accessibility.
257209

258-
```
259210
**Key Features:**
260211
- **Real-Time Session Control:** Monitor and interact with MCP sessions via a browser UI.
261212
- **Cross-Platform Compatibility:** Ensure the plugin works seamlessly across devices and operating systems.
@@ -265,7 +216,6 @@ Absolutely! Here are the two new features in your exact `mkdocs-material` + `adm
265216
- Distributed via the Chrome Web Store.
266217
- Uses JWT tokens stored in extension config or injected from Admin UI.
267218
- Interfaces with public `/servers`, `/tools`, `/resources`, and `/message` endpoints.
268-
```
269219

270220
---
271221

@@ -403,18 +353,145 @@ Absolutely! Here are the two new features in your exact `mkdocs-material` + `adm
403353
```
404354

405355
**Acceptance Criteria:**
356+
406357
- UI exposes a single **Download Config** button per server.
407358
- Endpoint `/servers/{id}/client-config` returns fully populated config.
408359
- Tokens are scoped, short-lived, or optionally ephemeral.
409360
- Claude Desktop accepts the file without user edits.
410361

411362
**Security:**
363+
412364
- JWT token is only included if the requester is authenticated.
413365
- Download links are protected behind user auth and audit-logged.
414366
- Expiry and scope settings match user profile or server defaults.
415367

416-
**Bonus Ideas:**
368+
**Stretch goal:**
369+
417370
- Toggle to choose between Claude, curl, or Docker styles.
418371
- QR code output or "Copy to Clipboard" button. QR might work with the phone app, etc.
419372

420373
---
374+
375+
376+
377+
378+
379+
380+
381+
### 🧭 Epic: LDAP & External Identity Integration
382+
383+
???+ "Corporate Directory Auth"
384+
**LDAP Authentication:** As a platform admin, I want to configure LDAP/Active Directory so that users authenticate with corporate credentials.
385+
386+
**Group Sync:** As a platform admin, I want to sync LDAP/AD groups into gateway roles so I can manage permissions via directory groups.
387+
388+
**SSO Integration:** As a platform admin, I want to support SAML/OIDC so that teams can use existing single sign-on.
389+
390+
---
391+
392+
## 🔐 Authentication, Authorization, Security & Identity
393+
394+
### 🧭 [#87 Epic: JWT Token Catalog with Per-User Expiry and Revocation](https://github.com/IBM/mcp-context-forge/issues/87)
395+
396+
???+ "Token Lifecycle Management"
397+
- **Generate Tokens:**
398+
As a platform admin, I want to generate one-time API tokens so I can issue short-lived credentials.
399+
- **Revoke Tokens:**
400+
As a platform admin, I want to revoke tokens so I can disable exposed or obsolete tokens.
401+
- **API Token Management:**
402+
As a user or automation client, I want to list, create, and revoke tokens via API so I can automate credential workflows.
403+
404+
---
405+
406+
### 🧭 Epic: Per-Virtual-Server API Keys
407+
408+
???+ "Scoped Server Access"
409+
- **Server-Scoped Keys:**
410+
As a platform admin, I want to create API keys tied to a specific virtual server so that credentials are limited in scope.
411+
- **Key Rotation & Revocation:**
412+
As a platform admin, I want to rotate or revoke a virtual server's API keys so I can maintain security without affecting other servers.
413+
- **API Management UI & API:**
414+
As a developer, I want to list, create, rotate, and revoke server API keys via the Admin UI and REST API so I can automate credential lifecycle for each virtual server.
415+
416+
---
417+
418+
### 🧭 Epic: Role-Based Access Control (User/Team/Global Scopes)
419+
420+
???+ "RBAC & Scoping — Overview"
421+
- **User-Level Scopes:**
422+
As a platform admin, I want to assign permissions at the individual-user level so that I can grant fine-grained access.
423+
- **Team-Level Scopes:**
424+
As a platform admin, I want to define teams and grant scopes to teams so that I can manage permissions for groups of users.
425+
- **Global Scopes:**
426+
As a platform admin, I want to set global default scopes so that baseline permissions apply to all users.
427+
428+
???+ "1️⃣ Core Role / Permission Model"
429+
- **Define Canonical Roles:**
430+
Built-in `Owner`, `Admin`, `Developer`, `Read-Only`, and `Service` roles.
431+
*Acceptance Criteria:*
432+
- Roles stored in `roles` table, seeded by migration
433+
- Each role maps to a JSON list of named permissions (e.g. `tools:list`)
434+
- Unit tests prove `Read-Only` cannot mutate anything
435+
- **Fine-Grained Permission Catalog:**
436+
- Full CRUD coverage for `tools`, `servers`, `resources`, `prompts`, `gateways`
437+
- Meta-permissions like `metrics:view`, `admin:impersonate`
438+
- All FastAPI routes must declare a permission via decorator
439+
440+
???+ "2️⃣ Scope Hierarchy & Resolution"
441+
- **Precedence:**
442+
Global → Team → User; resolution returns union of allow rules minus any denies.
443+
- **Wildcards:**
444+
Support `tools:*`, `admin:*` and expand dynamically into specific scopes.
445+
446+
???+ "3️⃣ Teams & Membership"
447+
- **Team CRUD APIs & UI:**
448+
Admin panel and REST API for team management (`GET/POST/PATCH/DELETE`), plus CSV/JSON import with dry-run mode.
449+
- **Nested Teams (Optional v2):**
450+
Support hierarchical teams with depth-first inheritance and first-match-wins precedence.
451+
452+
???+ "4️⃣ OAuth 2.1 / OIDC Integration"
453+
- **External IdP Mapping:**
454+
SSO/OIDC `groups` and `roles` claims map to gateway teams via a `team_mappings` table.
455+
- **PKCE Auth Code Flow:**
456+
Public clients get redirected to IdP; receive gateway-signed JWT with scopes in `scp` claim.
457+
- **Refresh-Token Rotation & Revocation List:**
458+
Short-lived access tokens (≤15 min), refresh token rotation, revocation checked per request.
459+
460+
???+ "5️⃣ Service / Machine Credentials"
461+
- **Client-Credentials Grant:**
462+
CI systems and automation can obtain scoped access tokens using client ID and secret.
463+
- **Signed JWT Actor Tokens:**
464+
Internal components can impersonate users or declare service identities via signed JWTs with `act` and `sub`.
465+
466+
???+ "6️⃣ Enforcement Middleware"
467+
- **FastAPI Dependency:**
468+
`require_scope("...")` uses JWT and Redis permission cache; 403 on scope mismatch.
469+
- **Transport-Level Guards:**
470+
HTTP/SSE/A2A transports reject missing or invalid scopes early (401/403).
471+
472+
???+ "7️⃣ Delegated (On-Behalf-Of) Flow"
473+
- **User-Delegated Tokens:**
474+
Users can mint scoped, short-lived tokens for agents to act on their behalf (e.g. tool calls); modal in Admin UI allows setting scopes and expiry.
475+
476+
???+ "8️⃣ Audit & Observability"
477+
- **RBAC Audit Log:**
478+
Logs every grant/revoke/login with full metadata (who, what, when, IP, UA); exports to JSON Lines and Prometheus metrics (`authz_denied_total`).
479+
- **Correlation IDs:**
480+
403s include `correlation_id` header for traceability in logs and dashboards.
481+
482+
???+ "9️⃣ Self-Service Permission Inspector"
483+
- **Why-Denied Endpoint:**
484+
`POST /authz/explain` returns an evaluation trace (role → scope → result); Admin UI visualizes graph with colored indicators.
485+
486+
???+ "🔟 Migration & Back-Compat"
487+
- **Mixed-Mode Auth Toggle:**
488+
Support `AUTH_MODE=legacy|rbac`; legacy JWTs fallback to a `compat` role.
489+
- **Data Migration Scripts:**
490+
Alembic sets up `roles`, `permissions`, `teams`; CLI `mcpgateway migrate-rbac` assigns global admins from legacy data.
491+
492+
???+ "✅ Definition of Done"
493+
- All HTTP/SSE/WS/A2A routes enforce scopes; fuzz tests confirm no bypass
494+
- Full Admin UI coverage for role, team, and permission management
495+
- End-to-end: IdP login → group-to-team mapping → scope-enforced tool access
496+
- Regression tests for scope resolution, wildcard expansion, token lifecycles, delegated access, and audit logging
497+
- Upgrade guide and SDK usage examples available in documentation

0 commit comments

Comments
 (0)