Ticket IDs restart per tenant, and other things I learned wiring a .NET backend to an MCP server
Описание и применение
Интеграция .NET‑бэкенда с MCP‑сервером привела к проблемам изоляции арендаторов. Решение включало создание отдельного внутреннего контроллера, строгую валидацию, переименование ключей задач и улучшение телеметрии.
Задача
Integrating a .NET multi‑tenant backend with an MCP server caused tenant‑resolution bugs, data leakage, and incorrect job keys.
Результат
Tenant isolation was restored, job keys no longer collide, telemetry accurately reflects per‑tenant usage, and agent‑initiated actions are safer and more transparent.
Рабочий процесс
- 1. Create a dedicated internal controller for service‑to‑service calls. 2. Require org and user IDs in every internal request. 3. Validate ticket existence, status, and link conflicts before performing actions. 4. Re‑key asynchronous jobs to (TenantId, TicketId). 5. Add optional user ID to usage records and map via usage controller. 6. Migrate connector records into per‑tenant tables. 7. Test with multiple tenants to ensure isolation and correct telemetry.
Доказательства
Ticket IDs restart per tenant… Jobs are keyed on (TenantId, TicketId) now.
Internal endpoints are not your public API… Different trust models.
- Дата записи: 2026-09-15T12:16:53.066Z