MCP 中的 OAuth:在工具服务器中传递用户身份
当你第一次将 MCP 服务器接入真实的生产系统时,你会发现教程中轻描淡写的一点:该协议赋予了智能体(Agent)能力,但并没有给工具服务器一个每个审计日志都要求的答案——这是代表哪个人执行的操作? 你可以在不解决这个问题的情况下交付一个可运行的演示 demo,但如果不解决它,你无法向受监管的企业交付产品。而这两种状态之间的鸿沟,几乎完全是一个伪装成 OAuth 问题的分布式系统问题。
团队在这个鸿沟中寻求的解决方案,大致按尝试顺序排列,就像是把 OAuth 工作组十五年来一直警告的每一种反模式都游览了一遍。在 MCP 服务器环境中共享服务账号;将长期有效的个人令牌粘贴到配置中;或是乐观地认为“我们只需转发用户的会话 Cookie,让下游服务去处理就好”。每种方案在预发环境中都有效。但在安全审查第一次真正介入时,每种方案都会以不同的方式崩盘。
