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 引擎,这对于少数手动入驻的合作伙伴来说已经足够了。随着开发者平台的扩展,团队发现了三个关键差距:

  1. 权限模型 – 早期的许可流程未能清晰地将应用程序身份与授予的作用域(scopes)分离。
  2. 撤销体验 – 用户无法轻松查看或撤销应用访问权限。
  3. 滥用缓解 – 该引擎缺乏针对大规模、自动化使用的稳健保护措施。

为了解决这些差距,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 仪表板或通过官方文档开始使用:

通过允许任何客户注册 OAuth 客户端,Cloudflare 为更丰富的应用生态系统、更紧密的安全性、以及跨 Web 的更流畅的集成工作流铺平了道路。

Sources