跳到主要内容

上游认证

每个已注册的 MCP 服务器都可以定义 AISIX 如何认证到该上游服务器。AISIX 在网关侧持有上游凭证,并在列出工具或转发工具调用时出示它。MCP 客户端发送给 AISIX 的调用方 API Key 只用于认证调用方到 AISIX,绝不会转发或暴露给上游 MCP 服务器。

注册或更新 MCP 服务器 时,通过 auth_type 字段及对应认证模式需要的字段设置凭证。

认证模式

请选择与上游 MCP 服务器认证方式匹配的模式:

auth_type上游凭证AISIX 如何出示
none不发送凭证。
bearersecret 中的 Bearer TokenAuthorization: Bearer <secret>
api_keysecret 中的 API Keyx-api-key: <secret>
oauth2client_id + token_url + secretAISIX 先获取访问 Token,然后发送 Authorization: Bearer <access_token>

secret 保存 AISIX 需要向上游出示的明文凭证。该凭证只在网关侧使用,不会发送给调用方客户端。要轮换凭证,请使用新的 secret 更新资源。

无认证

当上游 MCP 服务器不需要凭证时使用 none,例如只在可信内部网络中可访问的服务器。

下面的示例会创建一个不带上游凭证的服务器资源:

curl -sS -X POST "http://127.0.0.1:3001/admin/v1/mcp_servers" \
-H "Authorization: Bearer ${AISIX_ADMIN_KEY}" \
-H "Content-Type: application/json" \
-d '{
"display_name": "runbooks",
"url": "https://runbooks.internal/mcp",
"auth_type": "none"
}'

auth_type 默认为 none,因此也可以省略。none 类型的服务器不应设置 secretclient_idtoken_urlscopes

Bearer Token

当上游服务器期望在 Authorization 请求头中收到静态 Token 时使用 bearer

下面的示例会创建一个服务器资源,并配置 AISIX 向上游发送的 Bearer Token:

curl -sS -X POST "http://127.0.0.1:3001/admin/v1/mcp_servers" \
-H "Authorization: Bearer ${AISIX_ADMIN_KEY}" \
-H "Content-Type: application/json" \
-d '{
"display_name": "github",
"url": "https://mcp.example.com/mcp",
"auth_type": "bearer",
"secret": "YOUR_UPSTREAM_MCP_TOKEN"
}'

bearer 会在每个发往该上游的请求中发送 Authorization: Bearer <secret>

secret 必填且不能为空。

API Key

当上游服务器期望在 x-api-key 请求头中收到 Key 时使用 api_key

下面的示例会创建一个服务器资源,并配置 AISIX 向上游发送的 API Key:

curl -sS -X POST "http://127.0.0.1:3001/admin/v1/mcp_servers" \
-H "Authorization: Bearer ${AISIX_ADMIN_KEY}" \
-H "Content-Type: application/json" \
-d '{
"display_name": "catalog",
"url": "https://catalog.example.com/mcp",
"auth_type": "api_key",
"secret": "YOUR_UPSTREAM_API_KEY"
}'

api_key 会在每个发往该上游的请求中发送 x-api-key: <secret>

secret 必填且不能为空。

OAuth 2.0 客户端凭证

当上游服务器接受 OAuth 2.0 访问 Token,且你拥有面向它的机器对机器客户端凭证时使用 oauth2

AISIX 会在 Token 端点交换客户端凭证,把访问 Token 发送给上游,并复用到即将过期前。如果上游服务器以未授权拒绝某个 Token,AISIX 会丢弃缓存的 Token,并在下次调用时获取新 Token。

下面的示例会创建一个服务器资源,并配置 AISIX 用于该上游的 OAuth 客户端凭证:

curl -sS -X POST "http://127.0.0.1:3001/admin/v1/mcp_servers" \
-H "Authorization: Bearer ${AISIX_ADMIN_KEY}" \
-H "Content-Type: application/json" \
-d '{
"display_name": "orders",
"url": "https://orders.example.com/mcp",
"auth_type": "oauth2",
"client_id": "aisix-gateway",
"token_url": "https://auth.example.com/oauth/token",
"secret": "YOUR_OAUTH_CLIENT_SECRET",
"scopes": ["mcp.read", "mcp.write"]
}'

oauth2 表示该上游使用 OAuth 2.0 客户端凭证授权。

client_idtoken_urlsecretoauth2 服务器的必填字段。

scopes 可选。AISIX 会用空格拼接这些值,并作为 Token 请求的 scope 参数。

AISIX 会把访问 Token 保留在网关侧,绝不会返回给调用方。

凭证处理

AISIX 会在创建或更新服务器时根据 auth_type 校验凭证字段。不满足这些规则的服务器会在写入时被拒绝。

如果凭证后续失效(例如被轮换或吊销),只有该服务器的工具会不可用,其它已注册 MCP 服务器不受影响。AISIX 会记录失败,但不会把凭证细节暴露给调用方 Agent。

下一步

你现在已经了解 AISIX 如何认证到上游 MCP 服务器。使用下面的指南控制哪些调用方可以访问这些工具,以及如何治理相关流量:

  • 控制工具访问:将调用方 API Key 限定到特定工具、整个服务器或全部工具。
  • 限流与预算:把请求限制、并发限制和预算应用到 MCP 工具调用。
  • 安全护栏:检查 MCP 工具参数和工具结果。