在连续授予用户后,OAuth 2 auth范围是否为“堆栈”?

时间:2012-04-12 02:25:16

标签: oauth-2.0

例如,假设我有两个功能,一个需要Google通讯录,另一个需要Google日历。

我们还要说第一个功能被大量使用,这样请求用户授权两个auth范围会导致显着的丢弃率。

如果我为具有联系人auth scope bound的用户存储访问令牌,稍后会发生什么,我为该用户请求额外的auth范围日历?我是否只使用日历范围凭据获得新令牌?

LiveConnect表示,取代现有范围的范围会导致带有保护范围的新令牌和旧令牌失效。

1 个答案:

答案 0 :(得分:1)

假设您正在讨论authorization_code或隐式授权类型流,则需要由用户授权新范围。

用户代理将使用(现在)所需的范围发送到授权服务器的授权端点。必需的范围应包括您需要的全部范围(旧的和新的)。用户将看到请求的范围,然后对其进行授权。对于authorization_code grant类型,这会导致为表示用户同意范围的新访问令牌交换授权代码。隐式只会在URL片段中返回一个新的访问令牌。在任何情况下,这个新的访问令牌都将取代现有的访问令牌。

如果您涉及刷新令牌 - 在请求具有刷新令牌的新访问令牌时,您可以指定请求的范围。但是,该范围必须是原始范围的一个子集(请参阅:OAuth 2.0 spec section 6) - 未经用户同意(假设上述流程),无法对其进行扩展。