mcp ===== https://modelcontextprotocol.io/docs/learn/architecture core components ------------------ application 中manage多个mcp client 每个mcp client连接对应的mcp server authorization ---------------- https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization 强制 oauth2.1 要求 dynamic client registration (rfc7591),mcp client动态获取client id & client credential mcp server 即 resource server,通过well-known url声明自身能力 Authorization Flow Steps ----------------------------- mcp client <-> mcp server : 获取 mcp server 的 metadata mcp client: 从 metadata 解析出 authorization server mcp client <-> authorization server: 请求实施注册,获得client credentials mcp client -> browser : 构造PKCE请求(含code verifier),拉起browser browser <-> authorization server: 用户登录并获得authorization code browser -> mcp client: authorization code mcp client -> authorization server: 以authorization code + code challenge请求对应resource的access token authorization server: 颁发对应access token mcp client -> mcp server: 以access token请求对应resource bcp ------- Confused Deputy Problem: mcp proxy使用static client ID,无dynamic registration,browser侧不做user人工确认,攻击者(evil client)可能构造恶意redirect URI,欺骗用户点击登录并授权,最终获取用户的access token。 分析 ----- proxy场景需要强信任。 直连场景主要依赖oauth2.1。