密钥认证与会话模型
YouTeacher 的 MCP 服务用一把在网页端生成的 Ed25519 API 密钥向平台认证。私钥始终留在 owner 本机,从不经网络传出。本节讲清楚:这把密钥如何变成一个可用、能自动续期的会话,以及单个 MCP 进程如何满足后端的双层认证。
每次跨服务调用都带两重身份
后端会区分请求的两件事:用户是谁,以及是哪个平台组件在发起调用。因此一次跨服务边界的调用同时需要用户会话和服务级凭证。MCP 存储的唯一凭据就是它的密钥:它靠签名挑战来证明用户身份,靠一个每次请求现签的短时服务令牌来证明平台身份。
签一个挑战,换一个会话
首次认证调用时,服务用私钥签一个短时挑战,连同 key id 一起提交给认证服务上一个专用的按密钥签发(sign-in-by-key)端点。认证服务用登记在册的公钥验签,然后返回一个会话。该会话连同铸造服务令牌所需的材料一起缓存在内存里;不落盘,所以进程重启后重新签一遍即可。
续期是透明的
每次认证调用都带上缓存的会话。若后端以未授权拒绝,服务就丢弃缓存会话、重签一个新挑战、重试一次。两种情形走同一条路径:自然过期会在重试时无声愈合;而一把真正被吊销的密钥会在重试时失败,错误随之上抛给调用方。会话采用与普通登录相同的长时窗口。
吊销
吊销会级联:在网页端吊销一把密钥,会一次性作废由它派生的所有会话,所以丢失的机器会立刻失去访问权。
上手流程
owner 在账户安全页生成密钥,一次性下载私钥(只展示这一次),把它存进一个本地凭据文件,文件里同时记录目标环境。MCP 客户端通过一个环境变量指向该文件;一把密钥对应一个环境。