tools/call
上就开始注入新密钥。
每个服务器的鉴权被静态加密并在读取时屏蔽,因此明文令牌永不
往返回到你的控制台、你的智能体或模型。轮换是通过工作区控制台的
一次单字段更新。
1. 为什么 MCP 密钥轮换是它自己的操作
一个已注册的 MCP 服务器持有三样你在凭据变化时不想丢失的东西: 一个唯一的工作区name(你的规则对其 glob 的 <server>.<tool>
命名空间)、一个 endpoint,以及它已发现的工具集。删除并重新创建
服务器来更改一个令牌,会让每一条限定到 <server>.* 的规则成为
孤儿,并强制一次全新的 探测。
轮换绕开了这一切。你用新的 auth_json 对同一条服务器记录执行
PUT;其他一切——名字、规则、已发现的工具——都保持原位。
网关在派发时注入凭据,只在发起上游调用时才解密它们。一个被
轮换的密钥会在下一次连接时生效——OrcaRouter 在每一次服务器变更
时使按工作区工具缓存失效,因此没有 TTL 要等。
2. 一次具体的轮换
假设你注册了一个名为github、带 bearer 令牌的 MCP 服务器,而那个
令牌需要滚动更换。先读取当前记录——响应会屏蔽密钥,因此你绝不
经手旧明文:
PUT。在 body 中发送 id
和全新的 auth_json;网关在它触及数据库之前重新加密它:
name、endpoint、auth_mode 和 enabled
都保留它们已存储的值。新令牌在下一次 tools/call 上即生效。
3. 更改鉴权模式,而不只是密钥
轮换也涵盖在鉴权方案之间移动一个服务器。auth_mode 值的闭集是:
none
none
无凭据。
auth_json 为空。用于公开或网络受信任的 MCP 服务器。bearer
bearer
{ "token": "…" } —— 作为一个 Authorization: Bearer 头发送。oauth
oauth
{ "client_id": "…", "client_secret": "…", "token_url": "…" }。如果你
在 JSON 中存储一个静态 access_token,网关把它作为一个 bearer
令牌发送;client-credentials 交换本身尚未运行,因此一个需要
实时交换的服务器在你提供一个令牌之前会失败。basic
basic
{ "username": "…", "password": "…" } —— HTTP basic auth。4. 轮换之后:重新探测
如果旧令牌已被吊销,一个被轮换的凭据会改变你能触及哪些工具。 探测 该服务器以确认新鉴权有效并刷新 它的可达性status:
ok、degraded
或 down。一次鉴权失败会在这里浮现,而不是作为一次运行途中令人
困惑的工具错误。
5. 角色与什么保持屏蔽
本页的每一个操作都是一次工作区限定的控制台调用 (/api/workspace/firewall/mcp_servers,UserAuth)并受角色门控:
| 操作 | 最低角色 |
|---|---|
| 读取一个服务器(密钥屏蔽) | Member |
| 轮换 / 更新 / 注册 | Developer+ |
| 删除 | Developer+ |
明文永不返回到你的控制台。 读取会屏蔽密钥并脱敏端点;网关是
唯一解密凭据的东西,并且只在它拨入上游服务器的那一刻。模型和
你的智能体既看不到旧令牌也看不到新令牌。
6. 这落在哪里
轮换是更广的 MCP 信任面中的一个操作。一旦你的服务器被连接并鉴权, 同一个网关就会在每一次tools/call 运行之前对照你的
防火墙策略 评估它,在上面叠加
技能 隔离,并治理出站可达性。
连接一个服务器
注册一个 MCP 服务器并探测它的工具。
鉴权
为每个服务器挑选正确的鉴权模式。
允许列表 MCP 工具
限定每个服务器可以暴露哪些工具。
出站限制
治理工具调用可以触及哪里。
