【问题标题】:Revoke only Access Token, not Refresh Token仅撤销访问令牌,不撤销刷新令牌
【发布时间】:2019-04-12 20:52:36
【问题描述】:

我的应用程序可以通过 OAUTH2 访问我的 Google 云端硬盘。

我使用管理面板完成流程并获取刷新令牌,然后我的应用程序的用户将使用所述刷新令牌生成访问令牌以下载我的文件之一。

到目前为止一切都很好。

但我希望这些访问令牌在使用一次后被撤销,以避免被利用。

我尝试使用https://accounts.google.com/o/oauth2/revoke?token={token} 但正如文档所说,这个端点也会撤销刷新令牌......所以每次用户从我的应用程序下载文件时,我都必须再次进行身份验证才能获得新的刷新令牌。

如何在不撤销刷新令牌的情况下使访问令牌无效(或发出一个非常短暂的令牌)?我进行了广泛的搜索,但到目前为止找不到任何东西,并且与我在 SO 上找到的类似问题没有答案。

【问题讨论】:

    标签: google-drive-api google-oauth


    【解决方案1】:

    我假设您有一个服务器应用程序,它安全地存储了刷新令牌并使用它来按需生成访问令牌。您无法控制访问令牌的有效期。

    您可以做的是每分钟请求一个访问令牌并将它们存储在服务器端缓存中。当用户需要访问令牌时,给他们一个 59 分钟前的令牌(或更准确地说,到期时间 - 60 秒)。

    【讨论】:

    • 这太棒了,但同时也很蹩脚......谷歌是如此的巨人,他们没有预见到这种情况是很奇怪的。我可以请求的访问令牌数量是否有限制?
    • 这是相当标准的 OAuth 行为。访问令牌应在用户浏览器中保持私密,因此只有在用户设备遭到入侵或无人看管时才会出现漏洞。在这种情况下,它与让传统会话保持登录状态没有什么不同。您可以请求多少个访问令牌没有限制。
    • 当我的应用程序请求访问令牌时,它是为了下载文件,并且他通过旨在在发出请求后使令牌无效的流程来执行此操作,这是为了防止用户共享谷歌驱动认证的下载链接。但我想你的解决方案可以在我的应用程序还很小的时候工作,所以我会标记你的答案。非常感谢
    • 我能想到的唯一其他方法是让您的服务器应用代理对 GDrive 的调用,以便它可以分层自己的身份验证参数。
    猜你喜欢
    • 2021-09-24
    • 2015-04-16
    • 2022-07-05
    • 1970-01-01
    • 2018-04-23
    • 2020-09-29
    • 2015-12-13
    • 2018-11-14
    相关资源
    最近更新 更多