从全有或全无到基于任务的OAuth授权
内容提要
Cloudflare推出OAuth范围自定义功能,允许开发者将特定范围标记为可选,用户在授权时可取消选择,仅授予所需权限。此功能基于OAuth规范,默认保持原有体验,开发者需检查实际授予的范围。未来将扩展至更多产品,提升授权灵活性和安全性。
延伸解读
可选范围的实际意义
该功能允许用户在授权时取消选择可选范围,从而只授予应用实际需要的权限。这解决了此前用户只能全盘接受或拒绝的困境,尤其对MCP服务器等请求广泛权限的应用场景,用户可更精细地控制授权范围,提升安全性和信任度。
开发者需注意的适配点
开发者需在配置OAuth客户端时明确标记可选范围,并在授权流程后检查实际授予的范围,而非假设请求的全部范围都被批准。优雅处理部分授权的应用(如根据收到的权限子集运行)更容易获得用户信任。
范围评估的针对性
可选范围的评估仅针对当前授权请求中实际请求的范围,而非客户端配置的全部范围。这意味着授权页面只显示与当前任务相关的范围,避免用户被无关权限干扰,同时保持现有客户端的默认行为不变。
Q&A
Cloudflare 的 OAuth 范围自定义功能是什么?
Cloudflare 推出了 OAuth 范围自定义功能,允许开发者在配置 OAuth 客户端时将特定范围标记为可选。用户在授权时可以取消选择这些可选范围,从而只授予应用真正需要的权限,而不是被迫接受全部请求的权限。
OAuth 范围自定义功能如何工作?
开发者可以在 OAuth 客户端配置中指定哪些范围是必需的,哪些是可选的。当用户授权时,如果请求中包含可选范围,用户可以在同意屏幕上取消选择它们。最终生成的访问令牌只包含用户同意的范围。如果客户端没有请求可选范围,同意屏幕的体验保持不变。
为什么 Cloudflare 要推出 OAuth 范围自定义功能?
因为随着权限模型变得更加细粒度,原有的全有或全无的同意屏幕让用户难以接受。例如,MCP 服务器可能请求广泛的权限,但用户可能不希望授予所有权限。此功能让用户有更多控制权,只授予必要的权限,从而提升安全性和信任度。
开发者如何配置 OAuth 客户端以使用可选范围?
开发者在创建或更新 OAuth 客户端时,可以在请求体中添加 optional_scopes 字段,列出可选的 scope。例如,在 curl 命令中,通过 --data 参数传递 JSON,其中包含 scopes 和 optional_scopes 数组。
用户在使用 OAuth 授权时如何利用可选范围?
当应用请求的权限中包含可选范围时,用户可以在同意屏幕上取消选择这些可选范围,只保留自己愿意授予的权限。如果用户取消选择某些可选范围,生成的访问令牌将只包含用户同意的范围。
开发者在使用可选范围功能时需要注意什么?
开发者需要在交换授权码后检查实际授予的范围,而不是假设所有请求的范围都被批准。应用应该能够优雅地处理较窄的授权,例如代理在收到的权限子集内操作。这有助于建立用户信任。
OAuth 范围自定义功能对现有应用有什么影响?
默认情况下,现有 OAuth 客户端的行为保持不变,除非开发者主动将某些范围标记为可选。如果客户端没有选择可选范围,同意流程与之前相同。因此,现有应用无需修改即可继续工作。
Cloudflare 未来在 OAuth 范围方面有什么计划?
Cloudflare 计划在未来几周内扩展账户和区域级别的角色范围,覆盖几乎所有 Cloudflare 产品,提供更多的 API 令牌角色、账户成员选项和 OAuth 范围,以帮助客户以适当的访问级别保护工作负载。