Decision Gate Docs

Avaluació de portes determinista, reproduïble amb decisions auditable.

Asset Core docs

Arquitectura d’Autenticació/Autorització de Decision Gate + Divulgació

Audience: Engineers implementing or reviewing MCP authentication, Audiència: Enginyers que implementen o revisen el comportament d’autenticació, autorització i divulgació d’errors de MCP.


Taula de continguts

  1. Visió Executiva
  2. Context de la sol·licitud i identitat
  3. Modes d’autenticació
  4. Autenticació d’eines (Llista blanca)
  5. Autorització del llogater (connectable)
  6. Mesura d’ús i quotes (Plugable)
  7. Esdeveniments d’Auditoria d’Autenticació
  8. Postura de divulgació (JSON-RPC + HTTP)
  9. Limitació de Taxa i Respostes d’Overload
  10. File per Fitxer Referència Creuada

Executive Overview

Decision Gate MCP imposa una autenticació i autorització estrictes i de fallada tancada per a les crides d’eines. L’autenticació és conscient del transport (stdio, HTTP, SSE) i es configura a través de server.auth. L’autorització s’aplica per cada crida d’eina mitjançant DefaultToolAuthz, amb llistes d’eines opcionals. Una capa d’autorització de llogater separada i plugable pot imposar l’abast de llogater/espai de noms abans de l’execució de l’eina. Les decisions d’autenticació emeten esdeveniments d’auditoria estructurats, i els errors de sol·licitud es mapegen a codis d’error JSON-RPC estables i codis d’estat HTTP per a una divulgació determinista i etiquetatge de mètriques. F:crates/decision-gate-mcp/src/auth.rs L293-L372 F:crates/decision-gate-mcp/src/tools.rs L1436-L1454 F:crates/decision-gate-mcp/src/tools.rs L2857-L2878 F:crates/decision-gate-mcp/src/server.rs L1984-L2017


Context de la sol·licitud i identitat

Context de la Sol·licitud

Les sol·licituds entrants es normalitzen en un RequestContext que registra el transport, l’IP del peer, l’encapçalament d’autenticació, el subjecte del client i un identificador de sol·licitud opcional, així com metadades de correlació. Per als transports HTTP/SSE, el context es construeix a partir de l’encapçalament Authorization i l’encapçalament x-decision-gate-client-subject per a la identitat del proxy mTLS. Els identificadors de correlació proporcionats pel client arriben a través de x-correlation-id i es tracten com a entrada insegura: es validen estrictament i es rebutgen si són invàlids. El servidor sempre emet el seu propi x-server-correlation-id i el retorna en les respostes, proporcionant un identificador estable i auditable fins i tot quan els IDs dels clients falten o són rebutjats. F:crates/decision-gate-mcp/src/auth.rs L82-L173 F:crates/decision-gate-mcp/src/server.rs L993-L1072 F:crates/decision-gate-mcp/src/server.rs L1648-L1734

Identitat Principal

AuthContext captura el mètode d’autenticació més un subjecte explícit o una empremta digital del token de portador. Si una sol·licitud només local no té subjecte, el subjecte es configura com a stdio o loopback segons el transport. Per als tokens de portador, s’calcula una empremta digital sha256 i s’utilitza com a etiqueta d’identitat estable. F:crates/decision-gate-mcp/src/auth.rs L181-L216 F:crates/decision-gate-mcp/src/auth.rs L503-L517


Modes d’autenticació

El mode d’autenticació es configura mitjançant server.auth.mode amb llistes d’acceptació de suport:

  • local_only: s’accepta stdio; HTTP/SSE només s’accepten per a IPs de loopback.
  • bearer_token: el bearer token ha de coincidir amb server.auth.bearer_tokens.
  • mtls: subject must be present in x-decision-gate-client-subject and match mtls: el subjecte ha d’estar present en x-decision-gate-client-subject i coincidir amb server.auth.mtls_subjects quan estigui configurat.

Superfície de configuració:

Detalls d’implementació:

  • Local només rebutja HTTP/SSE no de retroalimentació.
  • Bearer tokens are parsed with size and scheme validation; invalid/missing Els tokens de portador es processen amb validació de mida i esquema; els encapçalaments no vàlids/o que falten fallen en l’autenticació.
  • mTLS requires a subject; unauthorized subjects are rejected. mTLS requereix un subjecte; els subjectes no autoritzats són rebutjats. F:crates/decision-gate-mcp/src/auth.rs L479-L552

Autenticació d’Eines (Llista Permesa)

L’autorització d’eines s’aplica per sol·licitud per DefaultToolAuthz. Si server.auth.allowed_tools està configurat, qualsevol eina que no estigui a la llista d’autoritzacions és rebutjada amb un error d’no autoritzat. Els noms d’eines no vàlids a la llista d’autoritzacions es tracten com una configuració de fallada tancada (llista d’autoritzacions buida). F:crates/decision-gate-mcp/src/auth.rs L293-L372

Els resultats de l’autorització de l’eina són emesos pel router d’eines:


Autorització del llogater (connectable)

L’autorització de l’inquilí/espai de noms s’aplica mitjançant un ganxo TenantAuthorizer que es pot connectar. La implementació per defecte permet tot l’accés, però les implementacions empresarials poden proporcionar un autoritzador que vincula els principals amb els àmbits d’inquilí i espai de noms. L’autorització de l’inquilí s’executa després de les comprovacions de la llista d’eines permeses i abans de l’execució de l’eina. Les denegacions d’inquilí emeten esdeveniments d’auditoria dedicats (tenant_authz).

Referències d’implementació:


Mesura d’Ús i Quotes (Connectables)

El mesurament d’ús i les comprovacions de quota són aplicades per un ganxo UsageMeter que es pot connectar. La implementació per defecte és un no-op, però les implementacions empresarials poden subministrar un mesurador que aplica quotes i registra l’ús de grau de facturació. Les comprovacions d’ús s’executen abans de l’execució de l’eina; les denegacions emeten esdeveniments usage_audit.

Referències d’implementació:


Esdeveniments d’Auditoria d’Autenticació

Les decisions d’autenticació emeten esdeveniments d’auditoria JSON estructurats amb detalls sobre el transport, el subjecte, el mètode i la raó de fallada. El registre d’auditoria per defecte registra línies JSON a stderr; les proves poden utilitzar un registre sense operacions. F:crates/decision-gate-mcp/src/auth.rs L379-L445


Postura de divulgació (JSON-RPC + HTTP)

Divulgació de Feedback (scenario_next)

Les respostes de scenario_next són només un resum per defecte. Els nivells de retroalimentació opcionals (trace, evidence) estan regulats per la política server.feedback.scenario_next, amb verificacions de rol/subjecte resoltes a partir de server.auth.principals. La retroalimentació d’evidència encara es filtra a través de la política de divulgació d’evidències (els valors en brut poden ser esborrats llevat que s’autoritzi explícitament). F:crates/decision-gate-config/src/config.rs L452-L545 F:crates/decision-gate-mcp/src/tools.rs L2144-L2257

JSON-RPC Error Envelope

El servidor MCP respon amb codis d’error JSON-RPC i metadades estructurades (kind, retryable, request_id, retry_after_ms opcional). Els tipus d’error són etiquetes estables utilitzades per a mètriques i categorizació d’auditories. F:crates/decision-gate-mcp/src/server.rs L1961-L2043

Mapeig d’Errors (Errors de l’Eina)

Els errors de l’eina es mapegen a l’estat HTTP + codis d’error JSON-RPC:

ToolErrorHTTPJSON-RPC CodeMessage
NoAutenticat401-32001no autenticat
NoAutoritzat403-32003no autoritzat
ParamsInvàlids400-32602missatge proporcionat
ViolacióDeCapacitat400-32602codi: missatge
EinaDesconeguda400-32601eina desconeguda
Resposta massa gran200-32070missatge proporcionat
LimitatPerTaxa200-32071missatge proporcionat
NoTrobat200-32004missatge proporcionat
Conflicte200-32009missatge proporcionat
Prova200-32020missatge proporcionat
PlaDeControl200-32030missatge proporcionat
ExecutarPaquet200-32040missatge proporcionat
Intern200-32050missatge proporcionat
Serialització200-32060la serialització ha fallat

Aquests mapeigs s’implementen en jsonrpc_error. F:crates/decision-gate-mcp/src/server.rs L1984-L2015

Capçalera del Repte d’Autenticació (RFC 6750)

Les respostes HTTP/SSE per a sol·licituds no autenticades inclouen un capçalera WWW-Authenticate amb un àmbit Bearer quan l’autenticació amb token Bearer està habilitada. Això s’alinea amb l’RFC 6750 i manté els desafiaments d’autenticació explícits sense filtrar detalls de validació del token. F:crates/decision-gate-mcp/src/auth.rs L46-L75 F:crates/decision-gate-mcp/src/server.rs L1706-L1718

Encapçalaments de Correlació

Les respostes HTTP/SSE sempre inclouen un x-server-correlation-id emès pel servidor. Si el client proporciona un x-correlation-id vàlid, es retorna. Els IDs de correlació del client invàlids són rebutjats abans de l’anàlisi de la sol·licitud i no es retornen. El rebuig de correlació invàlida utilitza HTTP 400 amb el codi d’error JSON-RPC -32073 (invalid_correlation_id). F:crates/decision-gate-mcp/src/server.rs L993-L1072 F:crates/decision-gate-mcp/src/server.rs L1648-L1749

Errors en la Anàlisi de Sol·licituds

Versions de JSON-RPC no vàlides, mètodes desconeguts i cossos de sol·licitud mal formats són rebutjats amb codis d’error estàndard de JSON-RPC i HTTP 400. F:crates/decision-gate-mcp/src/server.rs L1505-L1583


Limitació de Taxa i Respostes d’Overload

El servidor imposa:

  • Límits de sol·licitud en vol (rebutjar amb 503 i -32072).
  • Limitació de taxa (rebutjar amb 429 i -32071, incloent pistes de retry-after).
  • Límits de mida de càrrega útil (rebutjar amb 413 i -32070).

Aquests errors es reporten amb metadades d’error JSON-RPC estructurades i es marquen com a reintents quan és apropiat. F:crates/decision-gate-mcp/src/server.rs L1505-L1568 F:crates/decision-gate-mcp/src/server.rs L2051-L2053


File per Fitxer Referència Creuada

ÀreaFitxerNotes
Superfície de configuració d’autenticaciócrates/decision-gate-config/src/config.rsModes d’autenticació, llistes permeses de tokens/subjectes, llista permesa d’eines.
Motor de política d’autenticaciócrates/decision-gate-mcp/src/auth.rsDefaultToolAuthz, modes d’autenticació, esdeveniments d’auditoria, anàlisi de tokens.
Integració d’autenticació d’einescrates/decision-gate-mcp/src/tools.rsAutorització per trucada + emissió d’auditoria.
Interfície d’autorització de llogatercrates/decision-gate-mcp/src/tenant_authz.rsSeam d’autorització de llogater/namespace connectable.
Interfície de mesurament d’úscrates/decision-gate-mcp/src/usage.rsSeam de mesurament d’ús connectable + aplicació de quotes.
Divulgació JSON-RPCcrates/decision-gate-mcp/src/server.rsMapeig d’errors i codis de resposta.