auth: add community token service seam
This commit is contained in:
@@ -230,6 +230,45 @@
|
||||
- открытая редакция работает только со статическим ключом агента и не обязана реализовывать эти конечные точки;
|
||||
- детальная схема уровней и режимов доступа зафиксирована в `docs/agent-auth-model.md`.
|
||||
|
||||
JSON payloads:
|
||||
|
||||
- `POST /mcp-auth/v1/token`
|
||||
- request:
|
||||
- `grant_type`: `agent_key | refresh_token`
|
||||
- `agent_key?`
|
||||
- `refresh_token?`
|
||||
- `scope[]`
|
||||
- response:
|
||||
- `access_token`
|
||||
- `token_type`
|
||||
- `expires_in`
|
||||
- `refresh_token?`
|
||||
- `machine_access_mode`
|
||||
- `security_level`
|
||||
- `agent_id`
|
||||
|
||||
- `POST /mcp-auth/v1/token/one-time`
|
||||
- request:
|
||||
- `agent_key`
|
||||
- `operation_id`
|
||||
- `scope[]`
|
||||
- response:
|
||||
- `access_token`
|
||||
- `token_type`
|
||||
- `expires_in`
|
||||
- `machine_access_mode`
|
||||
- `security_level`
|
||||
- `agent_id`
|
||||
|
||||
Community behavior:
|
||||
|
||||
- открытая редакция публикует эти конечные точки как stable public contract;
|
||||
- в Community вызовы возвращают `403 forbidden` с structured `error.context`, где явно указаны:
|
||||
- `edition`
|
||||
- `machine_access_mode`
|
||||
- `upgrade_required`
|
||||
- private реализация short-lived и one-time token service подключается без изменения публичного HTTP surface.
|
||||
|
||||
### 5.8. Observability
|
||||
|
||||
- `GET /api/admin/workspaces/{workspace_id}/logs`
|
||||
|
||||
@@ -283,3 +283,22 @@ Enterprise-реализация должна поставляться через
|
||||
- в Enterprise — при необходимости одноразовые токены;
|
||||
- уровень защиты определяется операцией, а не агентом;
|
||||
- агент никогда не ослабляет обязательную защиту опубликованной операции.
|
||||
|
||||
## 13. Public contract seam
|
||||
|
||||
В public Community-коде должны существовать стабильные HTTP contracts для будущего token service:
|
||||
|
||||
- `POST /mcp-auth/v1/token`
|
||||
- `POST /mcp-auth/v1/token/one-time`
|
||||
|
||||
На первом этапе Community может не содержать private issuer implementation, но должна:
|
||||
|
||||
- сохранить DTO и shape ответов;
|
||||
- возвращать предсказуемый `403 forbidden` для short-lived и one-time token flows;
|
||||
- явно сообщать через structured context, что для выбранного `machine_access_mode` требуется расширенная редакция.
|
||||
|
||||
Это позволяет:
|
||||
|
||||
- не менять public API при подключении private реализации;
|
||||
- держать open-core границу на уровне реализации, а не на уровне transport contract;
|
||||
- не смешивать Community static agent-key flow с commercial `elevated/strict` реализацией.
|
||||
|
||||
Reference in New Issue
Block a user