@@ -27,6 +27,48 @@ stateDiagram-v2
2727 Worker --> [*] : Tool result to MCP client
2828```
2929
30+ ### Access + OAuth Flow
31+
32+ ``` mermaid
33+ sequenceDiagram
34+ participant C as MCP Client
35+ participant Access as Cloudflare Access
36+ participant W as Worker
37+ participant O as OAuth Provider
38+ participant MS as Microsoft Entra
39+
40+ C->>Access: 1. Request /sse
41+ Access-->>C: 2. Enforce SSO / MFA
42+ C->>Access: 3. Present Access session
43+ Access->>W: 4. Forward request + CF-Access headers
44+ W->>O: 5. /authorize (approval + state)
45+ O-->>C: 6. Approval dialog (first visit)
46+ C->>O: 7. Approve + redirect
47+ O->>MS: 8. Authorize user
48+ MS-->>O: 9. Authorization code
49+ O->>MS: 10. Token exchange
50+ MS-->>O: 11. Access & refresh tokens
51+ O->>W: 12. Persist tokens in props
52+ W-->>C: 13. OAuth access token for MCP session
53+ ```
54+
55+ ### AI Gateway Egress
56+
57+ ``` mermaid
58+ sequenceDiagram
59+ participant DO as Durable Object
60+ participant W as Worker
61+ participant G as AI Gateway
62+ participant Graph as Microsoft Graph
63+
64+ DO->>W: 1. Tool call + Microsoft tokens
65+ W->>G: 2. env.AI.run(dynamic route, metadata)
66+ G->>Graph: 3. Forward request with policy controls
67+ Graph-->>G: 4. API response
68+ G-->>W: 5. Response + `aiGatewayLogId`
69+ W->>DO: 6. Tool result (logs metadata + log ID)
70+ ```
71+
30721 . ** Cloudflare Access** acts as checkpoint #1 (perimeter). Requests without a valid Access token never
3173 reach the Worker. Identity, device posture, and service token claims can be surfaced through headers
3274 (` CF-Access-Authenticated-User-Email ` , ` CF-Access-Jwt-Assertion ` ).
0 commit comments