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
@@ -76,28 +76,6 @@ Allow choosing which MCP protocol version each virtual server uses.
76
76
77
77
---
78
78
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.
### 🧭 [#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.
0 commit comments