SuperAPI AI 工具集

mcp-auth-oauth

安全与审计

查看项目

更新于 10-15 23:49

技能介绍

用途:为远程 MCP 服务器实现 OAuth 2.1 + PKCE 认证,支持多用户场景,也可用于把静态 bearer token 服务器迁移为按用户认证、排查 MCP 客户端 401 或认证失败、以及为 MCP 服务器添加基于 scope 的权限。

主要能力:按 RFC 8414、RFC 7591 与 PKCE 实现完整流程——客户端连接返回 401 并带 WWW-Authenticate 指向授权服务器元数据;客户端获取 /.well-known/oauth-authorization-server 得到各端点;通过 registration_endpoint 动态获得 client_id;浏览器打开授权端点完成 PKCE 校验;在 token_endpoint 换取 access 与 refresh token;随后以 Authorization: Bearer 重试。无需预共享 client ID 或手动注册应用。

服务端要求:提供发现元数据(issuer、authorization_endpoint、token_endpoint、registration_endpoint、scopes_supported、code_challenge_methods_supported 为 S256、token_endpoint_auth_methods_supported 为 none);401 响应带 WWW-Authenticate 指向受保护资源元数据;实现动态客户端注册、授权端点(强制 S256)与令牌端点(校验 PKCE、支持 refresh_token)。

Scope 设计:按资源加动作分组,如 read:issues、write:issues、read:repos、admin:webhooks,避免 full_access;在工具处理器中校验 authInfo.scopes。令牌有效期:access token 1 小时(JWT 无状态),refresh token 30 天且每次刷新轮换,授权码 60 秒一次性。

客户端:Claude Desktop、Claude Code 与 Claude Agent SDK 在指定无 headers 的 url 服务器时会自动处理。

限制与注意:必须强制 PKCE S256,拒绝 plain 或缺失;刷新令牌每次使用轮换并在复用检测时撤销整条链;令牌绑定签发它的 client_id;按 MCP 2025 规范暴露 /.well-known/oauth-protected-resource;记录令牌签发审计但不要记录令牌本身,改记 JTI;过期令牌应返回 401 而非 403。