docs: the broker rename is done

The audience table now names token-exchange-broker, and the blocker that
recorded the leak is closed. What remains in that section is the missing
employeeNumber claim, which is unrelated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Stéphane Tailland
2026-08-29 07:53:31 +02:00
parent 3e4e8e363f
commit 5b0108fe43
+8 -16
View File
@@ -105,11 +105,11 @@ MCP servers, one per domain:
| Domain | URL | Audience scopes to request |
|---|---|---|
| catalog | `https://catalog-dev.sttlab.local/catalog-mcp` | `mcp-catalog-audience kong-token-exchange-broker-audience` |
| customers | `https://customers-dev.sttlab.local/customers-mcp` | `mcp-customers-audience kong-token-exchange-broker-audience` |
| payments | `https://payments-dev.sttlab.local/payments-mcp` | `mcp-payments-audience kong-token-exchange-broker-audience` |
| sales | `https://sales-dev.sttlab.local/sales-mcp` | `mcp-sales-audience kong-token-exchange-broker-audience` |
| workforce | `https://workforce-dev.sttlab.local/workforce-mcp` | `mcp-workforce-audience kong-token-exchange-broker-audience` |
| catalog | `https://catalog-dev.sttlab.local/catalog-mcp` | `mcp-catalog-audience token-exchange-broker-audience` |
| customers | `https://customers-dev.sttlab.local/customers-mcp` | `mcp-customers-audience token-exchange-broker-audience` |
| payments | `https://payments-dev.sttlab.local/payments-mcp` | `mcp-payments-audience token-exchange-broker-audience` |
| sales | `https://sales-dev.sttlab.local/sales-mcp` | `mcp-sales-audience token-exchange-broker-audience` |
| workforce | `https://workforce-dev.sttlab.local/workforce-mcp` | `mcp-workforce-audience token-exchange-broker-audience` |
**Two scopes per server, not one.** The MCP endpoint exchanges the token again
on its own account before reaching the domain API, so the token must also name
@@ -120,9 +120,9 @@ Measured on catalog: with both scopes the MCP server answers `200`, with
`mcp-catalog-audience` alone it answers `401`. LibreChat has always requested
both.
This is a property of the contract as it stands, not of any agent's design. The
broker client is still named after the middleware that introduced it, which is
a leak worth closing — see the blockers.
This is a property of the contract as it stands, not of any agent's design. If
the middleware serving these URLs is replaced by something that does not
re-exchange, the second scope simply becomes unnecessary.
LLM inference goes through the estate's LLM endpoint, never direct to a model
provider:
@@ -214,14 +214,6 @@ territory, a manager sees all) resolves through
identity, so the API cannot filter server-side. The realm's users
(`admin-user`, `pm-user`, …) are role placeholders, not real employees.
**The broker client is named after the middleware.** Every agent must request
`kong-token-exchange-broker-audience` alongside the server's own audience, so
the one thing an agent cannot avoid naming is the very thing it should not know
about. Closing it means renaming the client and its scope in Keycloak, and
following that rename through the gateway configuration, LibreChat and each
agent's config. Until then, treat the string as an opaque identifier owned by
the realm.
## Conventions
- Deliverables in English: code, comments, READMEs, Agent Cards. Conversation