跳转到主要内容
当一个密钥泄露、一个外包人员离场,或一个令牌只是到期时,你需要 在不拆除服务器记录、不重新编写它的防火墙规则、不打断已经 通过网关连接的智能体的情况下,替换一个已注册 MCP 服务器上的凭据。 那就是轮换:更新一个现有服务器上的鉴权,然后 MCP 网关 会在它派发的下一次 tools/call 上就开始注入新密钥。 每个服务器的鉴权被静态加密并在读取时屏蔽,因此明文令牌永不 往返回到你的控制台、你的智能体或模型。轮换是通过工作区控制台的 一次单字段更新。

1. 为什么 MCP 密钥轮换是它自己的操作

一个已注册的 MCP 服务器持有三样你在凭据变化时不想丢失的东西: 一个唯一的工作区 name(你的规则对其 glob 的 <server>.<tool> 命名空间)、一个 endpoint,以及它已发现的工具集。删除并重新创建 服务器来更改一个令牌,会让每一条限定到 <server>.* 的规则成为 孤儿,并强制一次全新的 探测 轮换绕开了这一切。你用新的 auth_json 对同一条服务器记录执行 PUT;其他一切——名字、规则、已发现的工具——都保持原位。
网关在派发时注入凭据,只在发起上游调用时才解密它们。一个被 轮换的密钥会在下一次连接时生效——OrcaRouter 在每一次服务器变更 时使按工作区工具缓存失效,因此没有 TTL 要等。

2. 一次具体的轮换

假设你注册了一个名为 github、带 bearer 令牌的 MCP 服务器,而那个 令牌需要滚动更换。先读取当前记录——响应会屏蔽密钥,因此你绝不 经手旧明文:
# 从控制台会话(UserAuth)配置,不是中继密钥。
curl https://api.orcarouter.ai/api/workspace/firewall/mcp_servers/42 \
  -H "Authorization: Bearer <your console access token>"
然后用仅有新凭据对同一条记录执行 PUT。在 body 中发送 id 和全新的 auth_json;网关在它触及数据库之前重新加密它:
curl -X PUT https://api.orcarouter.ai/api/workspace/firewall/mcp_servers \
  -H "Authorization: Bearer <your console access token>" \
  -H "Content-Type: application/json" \
  -d '{
    "id": 42,
    "auth_json": "{\"token\":\"ghp_NEW_token\"}"
  }'
你省略的字段保持不动——nameendpointauth_modeenabled 都保留它们已存储的值。新令牌在下一次 tools/call 上即生效。
回传屏蔽值以保留一个密钥;发送一个真实值以更改它。 如果你 读取记录并把它原样 PUT 回去,auth_json 中的屏蔽占位符会被识别 为”保留已存储的内容”——密钥不会被屏蔽值覆盖。只有一个真正 全新的 auth_json 才会轮换凭据。

3. 更改鉴权模式,而不只是密钥

轮换也涵盖在鉴权方案之间移动一个服务器。auth_mode 值的闭集是:
无凭据。auth_json 为空。用于公开或网络受信任的 MCP 服务器。
{ "token": "…" } —— 作为一个 Authorization: Bearer 头发送。
{ "client_id": "…", "client_secret": "…", "token_url": "…" }。如果你 在 JSON 中存储一个静态 access_token,网关把它作为一个 bearer 令牌发送;client-credentials 交换本身尚未运行,因此一个需要 实时交换的服务器在你提供一个令牌之前会失败。
{ "username": "…", "password": "…" } —— HTTP basic auth。
在两个带凭据的模式之间切换(例如 bearerbasic)需要在同一个 请求中发送一个全新的 auth_json。已存储的密文与其原始模式绑定, 因此旧密钥无法在新形态下被重新解读——提供新凭据,否则更新会被拒绝。

4. 轮换之后:重新探测

如果旧令牌已被吊销,一个被轮换的凭据会改变你能触及哪些工具。 探测 该服务器以确认新鉴权有效并刷新 它的可达性 status
curl -X POST \
  https://api.orcarouter.ai/api/workspace/firewall/mcp_servers/42/probe \
  -H "Authorization: Bearer <your console access token>"
探测用新的解密凭据运行一次 MCP 握手,并报告 okdegradeddown。一次鉴权失败会在这里浮现,而不是作为一次运行途中令人 困惑的工具错误。

5. 角色与什么保持屏蔽

本页的每一个操作都是一次工作区限定的控制台调用 (/api/workspace/firewall/mcp_servers,UserAuth)并受角色门控:
操作最低角色
读取一个服务器(密钥屏蔽)Member
轮换 / 更新 / 注册Developer+
删除Developer+
明文永不返回到你的控制台。 读取会屏蔽密钥并脱敏端点;网关是 唯一解密凭据的东西,并且只在它拨入上游服务器的那一刻。模型和 你的智能体既看不到旧令牌也看不到新令牌。

6. 这落在哪里

轮换是更广的 MCP 信任面中的一个操作。一旦你的服务器被连接并鉴权, 同一个网关就会在每一次 tools/call 运行之前对照你的 防火墙策略 评估它,在上面叠加 技能 隔离,并治理出站可达性。

连接一个服务器

注册一个 MCP 服务器并探测它的工具。

鉴权

为每个服务器挑选正确的鉴权模式。

允许列表 MCP 工具

限定每个服务器可以暴露哪些工具。

出站限制

治理工具调用可以触及哪里。
完整的服务器生命周期参见 防火墙:MCP 服务器,端到端的加固流程 参见 MCP 信任清单。轮换也是对照 MCP 工具投毒数据外泄 的一项常设事项: 一个你能快速滚动更换的凭据,是一个泄露无法坐享其上的凭据。

FAQ

不必。轮换只更改凭据。服务器保留它的 name,因此每一条限定到 <server>.* 的规则——以及任何 允许列表——都保持附着。
新密钥在下一次派发的 tools/call 上被注入。没有缓存 TTL 要等 ——OrcaRouter 在每一次服务器变更时使工作区工具缓存失效。
不能——而这正是重点。读取返回一个屏蔽的密钥;明文只会被网关 在派发时解密。通过发送一个新值来轮换,然后 探测 以确认它有效。