在当今人工智能和大语言模型(LLM)飞速发展的背景下,系统间的安全高效协作愈发重要。模型上下文协议(MCP)作为LLM与外部系统交互的事实标准应运而生,其在2024年11月首次发布,吸引了大量关注和应用。而随着2025年3月一项关键特性的加入,MCP远程HTTP服务器开始支持授权框架,使得安全认证成为部署MCP服务器的核心需求。本文将深入探讨如何基于OAuth 2.1标准构建类似Supabase的OAuth认证服务,为MCP服务器安全赋能。 MCP授权体系本质上建立在OAuth2基础上,特别是当前草案版本2.1,并引入了授权服务器元数据(ASM)和动态客户端注册(DCR)等扩展,进一步提升了协议的灵活与标准化。同时,2025年6月修订版本明确要求MCP服务器作为OAuth2兼容的受保护资源服务器(PRS)。
虽然定义看似完善,实际实现中却面临诸多挑战。 传统授权基础设施大多基于OpenID Connect(OIDC)开发,实际上OIDC是OAuth2的扩展,但ASM在二者中的定义存在细微的不兼容。主流身份提供商(IdP)通常不会同时支持两种ASM标准,造成在MCP环境下直接使用OIDC IdP遇到难题。此外,DCR作为此前较少被广泛应用的OAuth2扩展,其支持度在现有IdP中非常有限。Keycloak是少数支持ASM与DCR的IdP,但因其未能配置CORS头以支持DCR,无法直接满足大多数Web客户端需求。Dex作为灵活的OIDC提供者,虽然自身未完全支持所有OAuth2扩展,却通过gRPC接口为实现缺失功能提供了可能性。
鉴于现有方案的局限,Hypr MCP团队开发了一款自定义的MCP Gateway,作为多台后端MCP服务器的反向代理,同时完善符合MCP授权规范的OAuth支持。该网关使用Go语言实现,充分利用其强大的HTTP代理库和JWT处理生态,易于扩展并便于维护。基本的反向代理逻辑通过Go标准库中的httputil.ReverseProxy构建,借助http.ServeMux支持多路径、多服务器托管,以满足分布式部署需求。 跨域资源共享(CORS)问题普遍存在于Web客户端访问MCP端点时,虽非规范强制但实际应用中不可或缺。项目借助chi/cors的AllowAll策略简化处理,确保客户端预检请求顺利通过,提升用户体验。 安全认证方面,MCP Gateway通过自定义HTTP中间件实现OAuth访问令牌验证。
该中间件从请求头提取Bearer令牌,调用lestrrat-go/jwx库验证JWT的有效性,确保只有合法客户端能访问受保护资源。对于无效令牌,服务器返回401 Unauthorized状态,并指明资源受保护服务器端点的位置,符合规范要求。这一设计既保证了安全,又便于客户端发现认证入口。 MCP规范要求暴露/.well-known/oauth-protected-resource端点,提供资源名称及关联授权服务器列表。MCP Gateway简单实现该接口,输出JSON格式响应,向客户端透明告知认证服务器信息。 鉴于大部分IdP并不直接支持OAuth2 ASM,Hypr MCP通过在网关层代理OIDC标准的/.well-known/openid-configuration端点并适配响应格式,巧妙实现了ASM协议兼容。
网关将认证端点重定向至自身,隐藏后端IdP细节。这不仅提升了系统灵活性,还降低了客户端配置复杂度。 动态客户端注册的支持则是整套方案的关键亮点之处。利用Dex的gRPC API,MCP Gateway实现了自定义/oauth/register端点,在代理ASM响应时注入注册端点URI,允许客户端在运行时动态申请OAuth凭据。客户端提交注册信息后,网关调用Dex接口创建新的OAuth客户端信息并返回,支持公有客户端模式,兼容性良好。注册信息包括客户端ID、客户端密钥(可选)、名称、重定向URI以及Logo URI等。
为补齐授权请求中的必要scope,MCP Gateway代理授权端点,自动注入缺失的openid scope,避免严格身份提供商因scope不合规拒绝授权的情况。这种智能代理机制保障了多种客户端工具,尤其是部分未对scope严格设置的MCP客户端如Claude Code,能够成功完成授权流程。 在客户端实际应用中,OAuth2动态客户端注册面临的另一个现实问题是客户端凭据的持久化。由于示例配置使用了内存存储,重启Dex会导致动态客户端丢失,造成认证失败。对应客户端如Visual Studio Code需要手动重置动态认证提供者以恢复功能。面对这一挑战,建议生产环境采用持久化存储方案,并在客户端实现更智能的错误处理和凭据刷新机制。
通过将OAuth2认证层与MCP服务器反向代理结合,Hypr MCP团队展示了一条无需修改MCP服务器代码即可实现身份验证的可行路径。该方案不仅最大化复用了现有OAuth2及OIDC生态,还针对MCP特有需求进行了定制开发,有效填补了当前身份服务软件的空白。 该项目的开源版本发布于GitHub,提供完整代码示例和详细文档,便于社区使用和扩展。尤其值得一提的是团队还提供了用于测试的"MCP,我是谁?"服务,能够解析请求的授权JWT并反馈解析信息,方便开发者验证整套认证流程的正确性。 随着MCP作为连接LLM与外部系统的标准协议逐渐普及,能够支持OAuth2全流程的认证中间层势必成为基础配套设施。Hypr MCP构建的OAuth认证网关为业务方提供了生产级别的解决方案,提升系统安全性及可拓展性,同时降低了复杂性。
未来,随着身份提供商软件对ASM和DCR等扩展的支持日益完善,MCP认证框架也将逐渐成熟,助力更多企业安全激活AI数据与服务。 总之,打造类似Supabase的OAuth认证体系,为MCP服务器搭建一套符合最新规范的完整授权生态,是连接AI与业务系统的关键桥梁。通过自定义反向代理、智能元数据代理、动态客户端注册、JWT访问令牌验证,以及细致的协议适配,企业能够快速部署支持大规模、多租户、跨平台交互的安全MCP环境。借助成熟的开源工具和文档支持,开发者可实现低门槛、高灵活性的OAuth认证服务,降低维护成本,提升系统整体稳定性和安全防护能力。在大数据与人工智能时代,优秀的认证架构无疑是推动技术落地的重要基石。 。