# Cloudflare OAuth 与自动接入(docs/11 §14) 旧「Add Node」概念已删除,改为 **Connect Cloudflare Account**。 ## 流程 ```text Console | v Cloudflare OAuth | v 用户授权 Account | v Console +-- 保存 Account +-- Account / Zone 发现 +-- 配置 Domain(同步账号下全部域名,pending) +-- 创建 catch-all Mailbox +-- 部署账号级 Email Worker +-- 签发 WorkerCredential(secret 注入 Worker 脚本) ``` 用户不需要执行安装命令,也不手工创建 API Token。 ## 安全 - Cloudflare credential(OAuth access token)AES-GCM 加密存储,不进入前端和日志。 - OAuth state 一次性(用后即删)、5 分钟过期、绑定账号(CSRF 防护)。 - **授权回调不校验会话**:浏览器从 `dash.cloudflare.com` 跳回 Console 属于跨站顶级导航,`SameSite=Strict` 的会话 cookie 不会携带;该端点由一次性 state 承担 CSRF 防护,其余 `/api/oauth/*` 仍要求登录。 - Account ownership 以 token 实际可访问的 accounts 为准。 - 安装过程幂等,重复执行不产生重复资源。 - Worker credential 与 Cloudflare credential 分离;轮换 credential 后已配置域名自动重新部署。 ## 前置条件 `CF_OAUTH_CLIENT_ID` 与 `CF_OAUTH_CLIENT_SECRET` 必须配置,否则 `/api/oauth/cloudflare/start` 与 `/api/oauth/cloudflare/callback` 一律返回 503 —— 系统不提供任何模拟/降级通道, 不会出现"看起来接入成功"的假账号与假资源。