89 个故意写坏的版本全被抓到:MCP 多用户服务器的 OAuth 实战复盘
ShipItFrog · reddit · 2026-10-24
开发者分享将一个多用户 MCP 闪卡服务器(支持 claude.ai / Claude Code OAuth 登录,每人只看到自己的卡片)部署到 Render 免费方案 + Neon Postgres + Descope 认证的完整踩坑过程。
关键经验:
- OAuth 配置陷阱:手动从 Descope 元数据复制 issuer 时,JSON 字段被黏到末尾;改用复制按钮后每个值又带换行符,Render 配置框会保留换行导致登录全挂——启动失败好过启动后拒绝所有登录。
- 隔离设计:身份只来自已验证凭证(issuer + sub),绝不信工具参数或 header;每个查询按 owner 过滤,受众校验拒绝其他服务器签发的 token,不存在时返回与「无此卡」一致的响应。
- 故意打破隔离:针对 89 个刻意破坏的代码版本(缺 owner 过滤、未校验签名、token 写日志等)重跑测试,89 个全部被抓到。
- 预签密钥端点容灾:缓存最后签名密钥最多 30 分钟并回调重试,防止上游短暂故障导致全员无法登录;但密钥只在内存中,重启后无兜底。
- 免费主机冷启动:Render 免费方案静默四天后首个请求挂起 32 秒,而 Claude 的 OAuth 发现只等 10 秒,首次连接可能失败——先在浏览器打开元数据 URL 唤醒服务器即可。
大部分代码由 AI 编码代理在其指导下完成。遗留问题:token 到期前撤销且不每次请求都向 IdP 确认,尚未解决。
「编程与Agent」频道最新
- 开发者吐槽:Claude 写码快但失准,OpenAI Astra 空转数天 — StewartalsopIII · 2026-10-24
- 3090上跑Qwen 27B本地RAG,韩语基准打平Opus — Front-University4363 · 2026-10-24
- 用 AI 做 MVP 陷进研究兔子洞:过度优化流程而非推进产品 — SJW_Shadow_Monarch · 2026-10-24
- 直接在 Claude Code 里跑:一条 prompt 把本机安全审计自动化 — alex_verem · 2026-10-24
- YCloud 推出 WhatsApp API MCP Server,Claude 可自然语言直连 — modelcontextprotocol · 2026-10-24
- NoonAI DIS:MCP 自动检测并打码图像视频中的人脸 — modelcontextprotocol · 2026-10-24