Cloudflare 为所有客户推出自助管理 OAuth
Cloudflare 为所有客户推出自助管理 OAuth
Cloudflare 向所有客户开放 OAuth
Cloudflare 的全新自助管理 OAuth 功能允许任何 Cloudflare 账户创建自己的 OAuth 应用程序,为开发者提供了一种标准、可撤销且基于许可的方式来访问 Cloudflare API,而无需依赖长期有效的 API 令牌。
为什么通用 OAuth 至关重要
- 提高安全性 – 用户可以看到清晰的许可界面,可以在仪表板中撤销访问权限,并受到防止网络钓鱼攻击的保护。
- 更好的开发者体验 – 作用域访问(Scoped access)符合现代 SaaS 和内部平台的工作流,消除了对脆弱的 API 令牌管理的需要。
- 生态系统增长 – 开放 OAuth 移除了第三方集成、智能代理工具(agentic tools)和自定义自动化流水线的障碍。
安全地扩展 OAuth 引擎
Cloudflare 最初的 OAuth 实现使用了开源的 Hydra 引擎,这对于少数手动入驻的合作伙伴来说已经足够了。随着开发者平台的扩展,团队发现了三个关键差距:
- 权限模型 – 早期的许可流程未能清晰地将应用程序身份与授予的作用域(scopes)分离。
- 撤销体验 – 用户无法轻松查看或撤销应用访问权限。
- 滥用缓解 – 该引擎缺乏针对大规模、自动化使用的稳健保护措施。
为了解决这些差距,Cloudflare 更新了许可 UI,添加了仪表板撤销控制功能,并向用户展示了应用的所有权。
Hydra 1.X → 2.X 升级策略
两步升级计划
- 第 1 步 – 1.X 迁移 – 迁移到最新的 1.X 版本,重写模式迁移(schema migrations)以使用
CREATE INDEX CONCURRENTLY,并将SELECT *查询替换为显式的列列表,以避免锁争用。 - 第 2 步 – 2.X 迁移 – 部署蓝绿架构(blue-green architecture)以在处理大规模模式变更时避免停机。
蓝绿迁移细节
- 可写方式 – Cloudflare 扩展了令牌的 TTL,使其持续数小时,从而允许现有令牌在切换期间保持有效。
- 撤销重放队列 – Cloudflare Queue 捕获迁移期间的撤销事件;在切换后,队列会被清空以重放任何错过的撤销操作,从而防止意外重新授予访问权限。
执行结果
1.X 升级
- 迁移在没有用户影响的情况下完成。
- 新的、更严格的刷新令牌(refresh-token)失效机制导致了偶发的令牌链失效;Cloudflare 通过在 Worker 中添加一个刷新令牌合并层(refresh-token coalescing layer)并利用 Hydra 2.X 的可配置宽限期(grace period)缓解了这一问题。
2.X 升级
- 迁移窗口选择在请求量最低的时期;总运行时间约为 3 小时。
- 切换后,一个数据清理任务错误地删除了有效的 OAuth 策略数据,导致 403 响应激增。该问题通过恢复数据并改进授权逻辑得到了修复。
- 在发布后,迅速应用了针对特定客户端的额外微调。
升级后的性能提升
| 指标 | 升级前 | 升级后 | Δ |
|---|---|---|---|
| API P95 延迟 | 185 ms | 101 ms | -45 % |
| RSS 内存 | 888 MB | 763 MB | -14 % |
| Go heap 分配 | 449 MB | 271 MB | -40 % |
| Goroutine 数量 | 4,015 | 3,076 | -23 % |
| CPU 使用率 | 1.07 cores | 0.67 cores | -37 % |
数据库迁移统计数据也展示了操作的规模:
- 132.5 M 行更新
- 114.7 M 行插入
- 136.97 GB 临时存储使用量
- 22.2 k 事务提交
开始使用自助管理 OAuth
开发者现在可以直接从 Cloudflare 仪表板或通过官方文档开始使用:
- 文档: https://developers.cloudflare.com/fundamentals/oauth/
- 仪表板链接: https://dash.cloudflare.com/?to=/:account/oauth-clients
通过允许任何客户注册 OAuth 客户端,Cloudflare 为更丰富的应用生态系统、更紧密的安全性、以及跨 Web 的更流畅的集成工作流铺平了道路。