[ PROMPT_NODE_24506 ]
auth
[ SKILL_DOCUMENTATION ]
# 身份验证
在部署 Workers 或 Pages 之前进行 Cloudflare 身份验证。
## 快速决策树
需要身份验证吗?
├─ 交互式/本地开发 → wrangler login (推荐)
├─ CI/CD 或无头环境 → CLOUDFLARE_API_TOKEN 环境变量
└─ Terraform/Pulumi → 查看各自的参考文档
## wrangler login (推荐)
用于本地开发的一次性 OAuth 流程:
bash
npx wrangler login # 打开浏览器,完成 OAuth
npx wrangler whoami # 验证:显示邮箱 + 账户 ID
凭据存储在本地。适用于所有后续命令。
## API 令牌 (CI/CD)
用于自动化流水线或无法访问浏览器的环境:
1. 前往:**https://dash.cloudflare.com/profile/api-tokens**
2. 点击 **Create Token**
3. 使用模板:**"Edit Cloudflare Workers"**(涵盖 Workers, Pages, KV, D1, R2)
4. 复制令牌(仅显示一次)
5. 设置环境变量:
bash
export CLOUDFLARE_API_TOKEN="your-token-here"
### 按任务划分的最小权限
| 任务 | 模板 / 权限 |
|------|------------------------|
| 部署 Workers/Pages | "Edit Cloudflare Workers" 模板 |
| 只读访问 | "Read All Resources" 模板 |
| 自定义范围 | Account:Read + Workers Scripts:Edit + 特定资源 |
## 故障排除
| 错误 | 原因 | 修复 |
|-------|-------|-----|
| "Not logged in" | 无凭据 | `wrangler login` 或设置 `CLOUDFLARE_API_TOKEN` |
| "Authentication error" | 令牌无效/过期 | 在仪表板中重新生成令牌 |
| "Missing account" | 选择了错误的账户 | `wrangler whoami` 检查,在 wrangler.jsonc 中添加 `account_id` |
| 令牌本地有效,CI 失败 | 令牌范围限制在错误账户 | 验证两处的账户 ID 是否匹配 |
| "Insufficient permissions" | 令牌缺少所需范围 | 创建具有正确权限的新令牌 |
## 验证身份验证
bash
npx wrangler whoami
输出显示:
- 邮箱(如果是 OAuth 登录)
- 账户 ID 和名称
- 令牌范围(如果是 API 令牌)
非零退出代码表示未通过身份验证。
## 另请参阅
- [terraform/README.md](../terraform/README.md) - Terraform 提供程序身份验证
- [pulumi/README.md](../pulumi/README.md) - Pulumi 提供程序身份验证