最终版标准轨道
| 字段 | 值 |
|---|---|
| SEP | 985 |
| 标题 | 使 OAuth 2.0 受保护资源元数据与 RFC 9728 保持一致 |
| 状态 | 最终版 |
| 类型 | 标准轨道 |
| 创建日期 | 2025-07-16 |
| 作者 | sunishsheth2009 |
| 赞助人 | 无 |
| PR | #985 |
摘要
本提案使 MCP 规范中处理 OAuth 2.0 受保护资源元数据的方式与 RFC 9728 保持一致。 目前,MCP 规范要求在使用 401 Unauthorized 响应时通过 HTTP WWW-Authenticate 头来指示受保护资源元数据的位置。然而,RFC 9728,第 5 节 指出: “受保护资源可以使用 WWW-Authenticate HTTP 响应头字段(如 RFC 9110 中所述),向客户端返回其受保护资源元数据的 URL。” 这表明 MCP 规范可以在保持符合 RFC 的同时变得更加灵活。理由
许多大规模、动态、多租户环境依赖于与后端资源服务器分离的集中式身份验证服务。在这样的部署中,由于关注点分离和基础设施复杂性,从后端服务注入 WWW-Authenticate 头并非易事。 在这些场景中,提供通过知名 URL 发现元数据的选项为更容易采用 MCP 提供了一条实用路径。仅要求头信息将在组件之间施加巨大的通信开销,特别是当数百或数千个 MCP 实例动态创建和销毁时。此外,如果有特定的托管 MCP 服务器,在集中式系统中采用头信息将增加巨大的开销。 虽然这增加了客户端的复杂性——客户端现在必须实现探测元数据端点的逻辑——但它减少了服务器部署的摩擦,并可能鼓励更广泛的采用。存在权衡: 服务器开发者的优点:避免复杂的头信息注入;简化分布式环境中的集成。 客户端开发者的缺点:当头信息缺失时,客户端必须回退到元数据发现逻辑,增加了客户端复杂性。提议状态
更新 MCP 规范以:- 尝试不带令牌发起 MCP 请求。
- 如果收到 401 Unauthorized 响应:检查 WWW-Authenticate 头。如果存在且包含 resource_metadata 参数,使用它来定位资源元数据。
- 如果头不存在或不包含 resource_metadata,回退到请求 /.well-known/oauth-protected-resource。