【问题标题】:is there a deep dive on google's oauth2 scopes?谷歌的 oauth2 范围是否有深入研究?
【发布时间】:2013-07-11 21:11:37
【问题描述】:

我正在寻找有关 google 使用 oauth 范围的深入详细信息

我的云端硬盘应用正在运行,因此我可以轻松使用范围。但是我有以下详细的问题/问题..

  1. 我指定了两次范围。一次在我的应用程序中,然后也在 API 安慰。这两个范围各自的意义是什么 声明?
  2. 如果我删除范围,我的用户必须重新授权我的应用程序,还是这样 仅在添加其他范围时需要?
  3. 如果 2 的答案是“我无法静默删除范围”,那么 谷歌图书馆优雅地处理重新授权用户,或 我会得到 403 失败吗?我读过How should an application add/remove scopes to an existing grant?,但接受的答案特别提到了添加范围,而我的问题是关于删除范围。
  4. 我的应用程序中的不同模块能否请求不同的范围 API 控制台中指定的超集?解释一下,我的应用程序有 3 组件:访问 Drive 的 chrome 扩展程序,使用的 Web 客户端 JS 访问 Drive 和 YouTube(在线模式)和服务器 访问 Drive 的组件(在离线模式下)..
  5. 可以我的应用程序。询问它被授予了哪些范围?

一个普遍的问题,我确信我面临与许多应用程序作者相同的困境。如果我增加功能(这是一件好事,因为它吸引了用户),我还需要增加权限/信任用户在我的应用程序中的位置(这是一件坏事,因为它排斥用户)。对于应用应如何最好地处理这种利益冲突,是否有任何建议?

【问题讨论】:

    标签: google-authentication oauth2client


    【解决方案1】:

    您的客户端代码中的范围列表 - 这是用户授权您的应用执行的操作

    当您向用户请求授权时,您需要指定您希望用户同意的内容。这就是范围列表的用途 - 它控制用户在授权您的应用程序时看到的文本,并且该授权授予的刷新/访问令牌仅限于进行这些范围允许的 API 调用。

    API 控制台中启用的服务列表 - 这是您的应用授权用户执行的操作

    据我所知,API 控制台中没有指定范围列表。但是,有一个可以启用的 Google 服务列表。在这里启用/禁用服务更多的是关于打开/关闭进行 API 调用和管理配额和/或接受与该 API 相关的服务条款的能力,而不是授权。

    进行 API 调用时 - 您发送访问令牌

    访问令牌封装了发出请求的用户、用户授权给您的范围以及用于授权的客户端 ID(这又属于您的项目)。此时,您需要在项目上启用发送 API 调用的服务,以及 API 请求的正确范围 - 否则您将收到 403。

    当您的所需范围列表发生变化时 - 您应该期望用户需要重新授权

    在您请求访问令牌(通常通过发送刷新令牌)时,您需要为该请求不会成功做好准备。也许是因为您添加了范围 - 但也许用户选择访问 https://accounts.google.com/IssuedAuthSubTokens 并撤销了您的应用程序访问权限。我不确定如果您请求的范围小于用户最初授予的范围是否会触发此问题,我会尝试测试 - 但重点是,无论您的代码需要能够处理这种情况。我相信 OAuth2DecoratorFromClientSecrets (来自链接的问题)会为您优雅地处理这个问题,但不确定 - 它应该很容易验证。

    在多个客户端使用相同的授权 - 建议通读此文档,看看它是否涵盖了您的所有场景:https://developers.google.com/accounts/docs/CrossClientAuth

    要查看授予访问令牌的范围 - 使用 OAuth2 API:https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=yaxxxxxxxxxxxxxxx

    【讨论】:

    • 感谢您的回复。在“据我所知,API 控制台中没有指定范围列表”如果您查看code.google.com/apis/console/…,您将看到“其他范围”字段。输入您希望应用程序访问的任何 Google API 的 OAuth 2.0 范围 URL ”。这是让我感到困惑的一点。
    • 不幸的是,您的建议“我不确定如果您请求的范围小于用户最初授予的范围是否会触发此问题,我会尝试测试”并没有帮助。问题是,除非该行为被 Google 记录并确认,否则它可能会发生意外更改,最终可能会破坏我的应用程序。
    • 关于范围列表,这看起来特定于 Drive SDK,并且似乎是 Drive 在与 Drive UI 集成时代表您的应用程序请求的范围列表,请参阅 stackoverflow.com/questions/12763128/… 关于行为当请求的范围更少时 - 我要说明的一点是,您需要能够处理获得新授权的情况无论如何(因为用户可以通过他们的帐户撤销您的应用程序访问权限page) - 因此,无论行为如何,这都不应该是您的应用程序的新失败案例。
    猜你喜欢
    • 2015-10-03
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    相关资源
    最近更新 更多