Cloudflare 宣布推出 OAuth 范围定制功能,允许第三方 OAuth 应用所有者指定必需权限和可选权限。这样,用户便能在同意界面取消可选权限,只向应用授予范围更小的访问权限,而不必在授予所有请求权限和完全拒绝请求之间二选一。
此举是在开发者自 6 月以来在 Cloudflare 上创建了数千个第三方 OAuth 应用之后推出的;自那时起,授权操作已超过一百万次。这些应用用于软件即服务集成、内部工具、命令行界面和软件代理。
从全面同意转向与任务相关的权限
此前,Cloudflare OAuth 允许应用请求为其配置的部分范围,但用户无法直接在同意界面缩减这一范围。如果应用请求的权限超出了用户认为合适的程度,用户只能完整授予请求或拒绝请求。
Cloudflare 表示,MCP 服务器正是这一问题的一个明显使用场景;MCP 服务器可能请求一组广泛的权限,因为代理理论上可能需要全部权限,但用户未必愿意向代理授予这种级别的访问权限。在该功能发布之前,开发者必须构建自定义界面来选择范围,然后再将用户转入 Cloudflare 的同意流程。
可选范围如何运作?
- 开发者可以在设置 OAuth 客户端时,将特定范围标记为必需或可选。
- 用户可以在当前授权流程所请求的权限集合中,取消选择可选范围。
- 如果客户端未启用可选范围,默认体验保持不变;如果用户未取消任何可选范围,同意界面也会授予完整的请求集合。
关键在于,评估依据是应用在特定授权流程中请求的范围,而不是客户端上配置的全部范围。例如,如果客户端包含 user-details.read、workers-scripts.write、workers-kv-storage.write 和 zone.read,并将后两个范围设为可选,那么请求这四个范围时,用户可以仅取消后两个范围。
如果客户端之后只请求 workers-scripts.write 和 zone.read,那么该次操作只会评估这两个范围。其他范围不会显示,也不会被强制授予,因为它们并不属于当前请求。这有助于让同意界面聚焦于所需任务,而不是展示应用未来可能请求的所有能力。
对开发者而言实际会发生什么变化?
如果用户取消了部分可选范围并完成授权,生成的访问令牌将只包含用户同意的权限。因此,开发者应在交换授权码后检查已授予的范围集合,而不是假定应用获得了完整的请求集合。
这意味着应用,尤其是软件代理,需要顺畅处理部分权限授予。此外,请求必要的最小访问权限,并将额外权限设为可选,能够向用户表明应用尊重其对访问边界的决定。
扩展到 Cloudflare 产品
Cloudflare 表示,接下来几周将扩展账户级和区域级角色范围,覆盖其几乎所有产品,包括更多 API 令牌角色、账户成员选项和 OAuth 范围。开发者可以通过 Third Party OAuth 文档或控制面板中的 OAuth 应用页面开始使用。
公司表示,该功能是在 1,111 名实习生的帮助下开发的,并称赞了 Miller Vargas 和 José Enrique Rodriguez 的贡献。根据文章,Vargas 在 University of Texas - Austin 学习计算机科学和数学,而 Rodriguez 在 Universidad Panamericana 学习工程、数据智能和网络安全。