Cloudflare向所有用户开放自托管OAuth,打造开放应用生态
Cloudflare提供帮助运行网络中20%的各种服务。本月早些时候,我们宣布了自托管OAuth功能,使用户可以更轻松地为其自己的OAuth客户端创建和管理,从而实现对Cloudflare API的授权访问。
借助自托管OAuth,开发者现在可以提供一个标准的OAuth流程,客户可以直接授予范围化的访问权限,这使得构建SaaS集成、内部开发者平台和智能体(agentic)工具变得更加容易,同时为用户提供了更清晰的同意机制、更简单的吊销权限以及对应用行为的更多控制。
将自托管OAuth向所有客户开放,需要对Cloudflare底层的OAuth引擎进行了重大升级。Cloudflare此前使用的是开源的Hydra引擎。随着开发者平台的增长和智能体工作流的普及,显然需要进行一次重大升级。
他们决定进行两次连续升级:首先是升级到最新的1.X版本,然后是升级到2.X版本。1.X的升级要求进行模式迁移(schema migrations),这些迁移会在关键表上独占锁定。为防止用户受影响,他们重写了SQL迁移脚本,使用了CREATE INDEX CONCURRENTLY,并构建了一个定制版的Hydra。
对于2.X的升级,他们采用了数据库的蓝绿部署策略。他们创建了一个队列系统(使用Cloudflare Queues),以确保在升级窗口期间不会丢失任何吊销请求。这次生产环境升级大约耗时了三个小时。
升级后,他们观察到了显著的性能提升。向所有客户开放OAuth是推动Cloudflare应用生态系统更广泛发展的重要一步。
值得注意的技术细节包括:Hydra 1.X升级中出现了一个问题,由于更严格的刷新令牌失效机制(如果一个刷新令牌被重复使用,Hydra会使整个链条失效),导致了刷新令牌错误。这对于高请求量的Wrangler和MCP客户端来说是个大问题。他们通过使用一个刷新令牌合并(refresh token coalescing)的Worker来缓解了这个问题。Hydra 2.X版本则提供了一个可配置的“刷新令牌宽限期”(refresh token grace period)来解决此问题。
此外,还值得注意的是:在2.X升级后,其授权服务中的一个数据清理任务过于积极,导致了403错误。他们发现一个Hydra迁移破坏了某些有效OAuth会话的状态。他们进行了数据恢复并改进了OAuth授权行为。
原文:Unlocking the Cloudflare app ecosystem with OAuth for all - Cloudflare Blog