【发布时间】:2017-10-30 23:03:06
【问题描述】:
我正在构建一个提供使用 google 选项登录的 Web 应用程序。最初我们向用户询问profile 和email 范围(离线访问)。作为回报,我们得到一个code。
使用此代码,我请求refresh_token,然后请求access_token。这两个令牌都存储在客户端的 cookie 中(您可能会说在客户端存储 refresh_token 是个坏主意)。
在我的应用程序中,我为用户提供了访问他的驱动器文件的权限。为此,我使用增量范围。所以我问用户的驱动权限。作为回报,我得到一个code -> 新的refresh_token -> 新的access_token。
但问题是:
当用户清除 cookie 或注销时。然后当他登录时,会生成新的refresh_token 和access_token,其中只包含profile 和email 的范围。所以我不得不再次询问用户他的驱动器权限。我不想每次都向用户询问他已经给予他们的驾驶许可。
可能的解决方案:
在服务器端存储refresh_token??这是正确的方法吗??
【问题讨论】:
-
我为我正在工作的项目所做的是将它们加密发送到 dynamo db,在那里可以访问刷新令牌,以便您可以生成新的访问令牌,然后将其解密当你检索它时。
-
@JosephMckenzie 所以在登录用户后(你得到一个访问令牌)你从数据库中获取刷新令牌并生成一个新的访问令牌并覆盖旧的访问令牌??
-
是的,如果您愿意,我可以与您分享基本代码
-
肯定会有帮助的人
-
我也有同样的问题,但对我来说,存储刷新令牌似乎是一个安全漏洞,就好像你的数据库曾经被入侵一样,攻击者会突然对你的所有用户拥有谷歌驱动器访问权限,除非我错过了什么?
标签: google-api oauth-2.0 google-oauth