跳至主要內容

閘道驗證參考

LiteLLM 提供兩個閘道介面,兩者共用大多數驗證與授權原語,但在幾個重要地方有所不同。本頁為並排參考:各個標頭的作用、兩個介面相同之處,以及不同之處。每個章節都會連結至專屬頁面以提供完整細節。

介面端點專屬文件
MCP Gateway/mcp, /{server}/mcp, /toolset/{name}/mcp, /sse, /v1/mcp/..., /mcp-rest/...MCP 總覽
A2A Agent Gateway/a2a/{agent_id}, /a2a/{agent_id}/message/send, /v1/agents/...A2A 總覽

1. 用戶端 → LiteLLM(驗證呼叫端)​

兩個介面都接受相同的 LiteLLM Virtual Key 標頭與相同的識別標頭。唯一不同之處在於:MCP ASGI 路由(位於 /mcp, /{name}/mcp, /toolset/{name}/mcp, /sse 的可串流 MCP 端點)會略過標準 FastAPI 驗證相依性,不會解析供應商特定的驗證別名(API-Key, x-api-key, x-goog-api-key, Ocp-Apim-Subscription-Key)或 x-litellm-tags。MCP REST/管理路由(/v1/mcp/..., /mcp-rest/...)以及所有 A2A 路由都接受完整標頭集合。

標頭目的MCP ASGIMCP REST + A2A
x-litellm-api-key: Bearer sk-...建議使用的 LiteLLM Virtual Key 標頭。當傳入的 Authorization 標頭可能帶有不同的 token(OAuth passthrough、OBO、A2A per-user forwarding)時,請一律使用。✓✓
Authorization: Bearer sk-...標準備援。查找前會先去除 Bearer 前綴。✓✓
API-Key, x-api-key, x-goog-api-key, Ocp-Apim-Subscription-Key供應商特定別名(Azure、Anthropic、Google AI Studio、Azure APIM)。—✓
x-litellm-end-user-id端使用者識別。在 key 之上疊加每位端使用者的預算、MCP 存取交集與稽核記錄條目。x-litellm-customer-id 是可接受的別名。✓✓
x-litellm-trace-id跨請求關聯 ID。會回退至 x-litellm-session-id 或任何相符的 x-<vendor>-session-id 標頭。✓✓
x-litellm-session-id工作階段分組。與 trace-id 使用相同的解析路徑,優先順序較低。✓✓
x-litellm-tags以逗號分隔的標籤,用於 spend-log 標記與以標籤為基礎的路由。要求主體欄位 tags 具有優先權。—(MCP ASGI 上不會解析)✓
x-litellm-mcp-debug: true回傳遮罩後的診斷回應標頭(x-mcp-debug-*)。請參閱 MCP OAuth — 偵錯。✓—
x-mcp-servers將請求範圍限定到特定 MCP 伺服器(以逗號分隔)。✓—

2. LiteLLM → 後端(驗證閘道對代理程式或 MCP 伺服器的身份)​

這是 MCP 與 A2A 差異最大的區域。MCP 在每個伺服器註冊上都有第一類的 auth_type 欄位。A2A 完全沒有 auth_type 欄位;傳出驗證模式是根據 litellm_params 中的內容推斷。

MCP:auth_type 列舉​

MCP 伺服器的傳出 Authorization 標頭(或每個請求的 SigV4 簽章)由 auth_type 決定。完整表格請參閱 MCP 總覽:新增 HTTP MCP 伺服器。

auth_type機制專屬文件
none不加入驗證標頭—
api_key / bearer_token / basic / authorization / token靜態標頭,每次呼叫都會原樣傳送MCP 總覽
oauth2PKCE(互動式)或 M2M client_credentials。由 oauth2_flow 區分。MCP OAuth
oauth2_token_exchangeRFC 8693 On-Behalf-Of(OBO)— 將呼叫者的 bearer token 交換為具範圍限制的 MCP tokenMCP OBO 驗證
oauth2_id_jag身分斷言授權授權類型:將使用者的身分 token(傳入或在 SSO 登入時擷取)進行雙段交換,以取得 MCP access tokenMCP ID-JAG 驗證
true_passthrough不經 LiteLLM 受理。用戶端自己的 Authorization 會原樣轉送至上游MCP OAuth Passthrough
oauth_delegateLiteLLM 先以 x-litellm-api-key 接受呼叫者,然後轉送用戶端在 Authorization 中送出的另一個上游 bearer。受理 key 絕不會被轉送MCP OAuth Passthrough
aws_sigv4使用專用的 MCP 端憑證鏈,對每個請求進行 SigV4 簽章MCP AWS SigV4

A2A:從 litellm_params 推斷的驗證模式​

代理程式上沒有 auth_type 欄位。提供者處理常式會從 litellm_params 的內容中挑選驗證機制:

模式觸發時機傳送至後端
Bearer / JWT已設定 litellm_params.api_keyAuthorization: Bearer <api_key>
SigV4(僅限 AgentCore)未設定 litellm_params.api_key透過完整 AWS 憑證鏈進行每個請求的 SigV4。請參閱 Bedrock AgentCore — A2A Gateway Authentication。
提供者原生litellm_params.custom_llm_provider 符合非 Bedrock 提供者(Vertex AI Agent Engine、LangGraph、Azure AI Foundry、Pydantic AI)該提供者的正常驗證路徑

JWT 與 SigV4 的雙模式是 AgentCore 專屬。其他 A2A 提供者(Vertex、LangGraph、Azure Foundry)使用提供者自身的憑證慣例。請參閱 Providers 下相關的提供者頁面。

零信任附加元件(僅限 MCP)​

如果 MCP 伺服器需要以密碼學方式驗證請求確實經由 LiteLLM,請在上層套用 MCP JWT Signer 防護欄。它會使用短效 RS256 JWT 為每個傳出的工具呼叫簽章,並公開 MCP 伺服器可驗證的 JWKS 端點。這是防護欄(guardrail: mcp_jwt_signer, mode: pre_mcp_call),而不是 auth_type,且可與任何 auth_type 組合使用。


3. 每位使用者的標頭透傳​

兩個介面都允許用戶端轉送要送往特定後端伺服器/代理程式的憑證,而不需要管理員預先設定。其慣例看起來對稱,但解析方式不同,因此複製貼上時請務必精確。

介面前綴解析規則比對對象範例
MCPx-mcp-格式:x-mcp-{server_alias}-{header_name}先比對伺服器的 alias,再比對 server_name(不區分大小寫)x-mcp-github-authorization: Bearer ghp_... → 伺服器 github,標頭 Authorization
A2Ax-a2a-格式:x-a2a-{agent_name_or_id}-{header_name};與代理程式的 UUID 與可讀名稱比對(兩者都會嘗試)代理程式的 UUID 以及 可讀名稱(兩者都會嘗試)x-a2a-my-agent-x-api-key: secret → 代理程式 my-agent,標頭 x-api-key

兩個介面也都支援與使用者 passthrough 可組合的管理員控制替代方案:

機制MCPA2A備註
static_headers: {K: V}✓✓一律傳送。若 key 衝突,優先於使用者 passthrough。
extra_headers: [name, name, ...]✓✓管理員允許清單中可原樣轉送的用戶端標頭名稱。
x-<surface>-<id>-<header> 慣例✓ (x-mcp-)✓ (x-a2a-)由用戶端驅動,不需要管理員設定。

完整機制請參閱 MCP 總覽:轉送自訂標頭 與 A2A Agent Authentication Headers。


4. 授權:RBAC 與存取群組​

兩個介面都使用 object_permission 模型與交集式解析,但目前深度不同。MCP 會跨六層解析;A2A 則跨兩層。詳細流程圖與表格請見專屬頁面:

層級MCP 欄位A2A 欄位
Keyobject_permission.mcp_servers, object_permission.mcp_access_groups, object_permission.mcp_tool_permissionsobject_permission.agents, object_permission.agent_access_groups
Team相同相同(優先繼承:如果 key 沒有清單,則繼承 team 的)
End user相同(透過 x-litellm-end-user-id)— 今日尚未解析
Agent相同(透過 x-litellm-agent-id)— 不適用(agent 本身就是目標)
Internal user相同(請求經驗證為其的那位人類);與執行中的結果取交集,因此只能縮小範圍— 今日尚未解析
Org相同 — 作為上限— 今日尚未解析
關注項目MCPA2A
每個 server / 每個 agent 的允許清單object_permission.mcp_serversobject_permission.agents
存取群組(以標籤為基礎的授權)object_permission.mcp_access_groupsobject_permission.agent_access_groups
每個 server 的工具層級允許清單object_permission.mcp_tool_permissions: {server_id: [tool, ...]}n/a(工具位於 agent 內)
server 註冊允許清單(admin-static)MCP server 上的 allowed_tools / disallowed_toolsn/a
參數層級允許清單MCP server 上的 allowed_params: {tool_name: [param, ...]}n/a
拒絕行為list_tools 會過濾掉隱藏的 server;call_tool 會回傳錯誤GET /v1/agents 會過濾;POST /a2a/{agent_id} 會回傳 HTTP 403

5. Trace ID 與身分傳遞​

x-litellm-trace-id 會在每次請求中接受,並在兩個介面上隨記錄傳遞。A2A 還有幾個特定額外項目:

設定範圍行為
require_trace_id_on_calls_to_agent: true每個 agent,位於 agent 的 litellm_params 上拒絕缺少 x-litellm-trace-id(或 x-litellm-session-id fallback)的進站 /a2a/{agent_id} 呼叫,並回傳 HTTP 400。請參閱 A2A Overview — Trace ID enforcement。
require_trace_id_on_calls_by_agent: true每個 agent,位於 agent 的 litellm_params 上反向方向 — 當由該 agent 擁有的 key 發出出站呼叫時,要求該些呼叫帶有 trace ID。

子 agent 身分傳遞。 當 LiteLLM 在 A2A 呼叫的一部分中向下游發出請求時,會轉送 X-LiteLLM-Trace-Id 和 X-LiteLLM-Agent-Id,以維持追蹤連續性與支出歸屬。原始虛擬 key 與 end-user 身分不會自動轉送。請使用 extra_headers 或 x-a2a-{agent_name_or_id}-{header} 慣例來明確傳遞身分。請參閱 A2A Overview: Sub-agent identity propagation。


6. 閘道路徑上的防護欄​

關注項目MCPA2A
請求前輸入防護欄(Presidio、Bedrock、Lakera、Aporia 等)mode: pre_mcp_call標準聊天完成防護欄會套用到 agent 所發出的底層 LLM 呼叫
請求中介入mode: during_mcp_call—
零信任 JWT 簽章mcp_jwt_signer 防護欄—(目前不適用於 A2A)
文件MCP Guardrails、MCP Zero Trust標準 guardrails 文件 會透過 agent 的底層模型呼叫套用

7. 備忘表:各標頭的作用​

為了方便複製貼上,以下是兩個介面中高頻使用的請求標頭:

# Always (LiteLLM-side auth and identification)
x-litellm-api-key: Bearer sk-...
# or
Authorization: Bearer sk-...

x-litellm-end-user-id: user-42
x-litellm-trace-id: 8f4a-2b1c-d3e5-...

# MCP — server scoping / per-user passthrough
x-mcp-servers: github,zapier
x-mcp-github-authorization: Bearer ghp_<user-token> # user passthrough to github_mcp
x-litellm-mcp-debug: true # diagnostic response headers

# A2A — per-user passthrough
x-a2a-my-agent-authorization: Bearer <user-token> # caller's token to my-agent
x-a2a-my-agent-x-api-key: <user-key> # additional per-agent header

若要深入了解,請沿著上方的交叉連結前往專屬頁面。