api-key-auth-and-session-model

密钥认证与会话模型

YouTeacher 的 MCP 服务用一把在网页端生成的 Ed25519 API 密钥向平台认证。私钥始终留在 owner 本机,从不经网络传出。本节讲清楚:这把密钥如何变成一个可用、能自动续期的会话,以及单个 MCP 进程如何满足后端的双层认证

每次跨服务调用都带两重身份

后端会区分请求的两件事:用户是谁,以及是哪个平台组件在发起调用。因此一次跨服务边界的调用同时需要用户会话和服务级凭证。MCP 存储的唯一凭据就是它的密钥:它靠签名挑战来证明用户身份,靠一个每次请求现签的短时服务令牌来证明平台身份。

签一个挑战,换一个会话

首次认证调用时,服务用私钥签一个短时挑战,连同 key id 一起提交给认证服务上一个专用的按密钥签发(sign-in-by-key)端点。认证服务用登记在册的公钥验签,然后返回一个会话。该会话连同铸造服务令牌所需的材料一起缓存在内存里;不落盘,所以进程重启后重新签一遍即可。

续期是透明的

每次认证调用都带上缓存的会话。若后端以未授权拒绝,服务就丢弃缓存会话、重签一个新挑战、重试一次。两种情形走同一条路径:自然过期会在重试时无声愈合;而一把真正被吊销的密钥会在重试时失败,错误随之上抛给调用方。会话采用与普通登录相同的长时窗口。

吊销

吊销会级联:在网页端吊销一把密钥,会一次性作废由它派生的所有会话,所以丢失的机器会立刻失去访问权。

上手流程

owner 在账户安全页生成密钥,一次性下载私钥(只展示这一次),把它存进一个本地凭据文件,文件里同时记录目标环境。MCP 客户端通过一个环境变量指向该文件;一把密钥对应一个环境。

about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →

api-key-auth-and-session-model