You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/specification/draft/basic/authorization.mdx
+82-7Lines changed: 82 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -299,13 +299,88 @@ Authorization servers **SHOULD** only automatically redirect the user agent if i
299
299
300
300
### 3.4 Confused Deputy Problem
301
301
302
-
An attacker can exploit OAuth proxy configurations that share third-party client credentials
303
-
across multiple users.
302
+
An attacker can exploit configurations where an MCP server operates as a proxy in front of a third party resource server, leading to the confused deputy problem.
304
303
305
-
When an MCP server fronts an authorization server that does not support dynamic client
306
-
registration, the MCP server will use a static client ID to acquire credentials for the
307
-
upstream API.
304
+
#### 3.4.1 Terminology
308
305
309
-
If the the backing authorization server sets cookies after user consent, an attacker can craft malicious authorization requests that bypass consent flows for previously authorized applications.
306
+
MCP Proxy Server
307
+
: An MCP server that acts as an intermediary between MCP clients and a protected
308
+
third-party API. The MCP proxy server provides MCP functionality while delegating
309
+
API operations to a third-party API server. The MCP proxy server acts as a single OAuth client to the third-party API server.
310
310
311
-
MCP servers using a static client_id for a backing service MUST require explicit approval for each newly registered dynamic client prior to forwarding requests to the backing authorization server for user consent.
311
+
Third-Party Authorization Server
312
+
: The authorization server that protects access to the third-party API. This server may not
313
+
support dynamic client registration, requiring the MCP proxy server to use a single static
314
+
client ID for all requests.
315
+
316
+
Third-Party API
317
+
: The protected resource server that provides the actual API functionality. Access to this
318
+
API requires tokens issued by the third-party authorization server.
319
+
320
+
Static Client ID
321
+
: A fixed OAuth 2.0 client identifier used by the MCP proxy server when communicating with
322
+
the third-party authorization server, shared across all MCP clients.
323
+
324
+
#### 3.4.2 Architecture and Attack Flow
325
+
326
+
```mermaid
327
+
sequenceDiagram
328
+
participant UA as User-Agent (Browser)
329
+
participant MC as MCP Client
330
+
participant M as MCP Proxy Server
331
+
participant TAS as Third-Party Authorization Server
332
+
participant A as Attacker
333
+
334
+
Note over UA,M: Initial Auth flow completed
335
+
336
+
Note over UA,TAS: Step 1: Legitimate user consent for Third Party Server
337
+
338
+
M->>UA: Redirect to third party authorization server
0 commit comments