【问题标题】:How to handle Refesh-Tokens with GoogleApis for NodeJS Client?如何使用 Google APIs for Node JS Client 处理刷新令牌?
【发布时间】:2022-02-12 00:54:28
【问题描述】:

我正在查看以下文档: https://github.com/googleapis/google-api-nodejs-client#handling-refresh-tokens

尤其是这部分:

oauth2Client.on('tokens', (tokens) => {
  if (tokens.refresh_token) {
    // store the refresh_token in my database!
    console.log(tokens.refresh_token);
  }
  console.log(tokens.access_token);
});

我不明白为什么我应该将刷新令牌存储在数据库中。 是否因为刷新令牌仅在第一次授权时提供给我? 但即便如此,这不应该意味着这部分:

oauth2Client.setCredentials({
  refresh_token: `STORED_REFRESH_TOKEN`
});

应该替换上面的注释(// 将 refresh_token 存储在我的数据库中!)? 又名:

oauth2Client.on('tokens', (tokens) => {
  if (tokens.refresh_token) {
    oauth2Client.setCredentials({
  refresh_token: tokens.refresh_token
  });
});

这是由于 Google 在文档中的声明: "如果即将过期,此库将自动使用刷新令牌获取新的访问令牌"。

我想要构建一个应用程序,人们使用他们的 Google 帐户登录,然后可以使用我使用 f.e Google-analytics API 构建的几个分析工具。

我已经通过文档设置了一个有效的访问令牌,但我对这个主题真的很感兴趣,真的很想学习刷新部分,但我很难理解它。如果有人可以帮助我理解,我将非常感激。如果没有,有人可以指出我在其他地方对此(对于nodejs)的一个很好的解释吗? :)

【问题讨论】:

    标签: node.js oauth-2.0 google-api-nodejs-client


    【解决方案1】:

    刷新令牌的存在是为了在安全性和用户体验之间保持平衡。 访问令牌应该是短暂的 (read more about access token lifetime),以防恶意攻击者访问它。如果没有刷新令牌,您每次都需要请求用户授权。

    刷新令牌应存储在safe place

    将刷新令牌保存在安全的长期存储中,只要它们仍然有效,就可以继续使用它们。

    当您调用 oauth2Client.setCredentials 时,您正在初始化 SDK,因此它可以使用刷新令牌获取新的访问令牌,但 SDK 不会长期存储刷新令牌贮存。这是您的应用程序责任。

    请注意,如果刷新令牌被泄露或六个月未使用(对于 Google API),也可以撤销刷新令牌。此外,定期轮换刷新令牌是一种很好的安全做法。

    处理这部分也是您的应用程序责任,您可以阅读更多关于刷新令牌到期here

    【讨论】:

    • 谢谢鲁本!因此,如果我们将其转换为 JWT,刷新令牌不应该存储在 JWT-cookie 中吗?那等于是我们应该从谷歌的响应中选择单个元素(对于厨师来说是必需的),但排除其余元素?我在想的只是包括我的应用程序的 oauth id(用于身份验证),因为其他授权详细信息可以存储在 bigQuery 中。这有意义还是我错了?我感到困惑的原因是由于令牌事件。将 auth-token 存储在 cookie 中但将 refresh-token 存储在 db 中以便于使用可能更有意义?
    • 不客气,所以,这个关于令牌存储的链接可以帮助你决定做什么,因为我不知道你正在构建什么类型的应用程序auth0.com/docs/secure/security-guidance/data-security/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 2019-06-29
    • 2020-09-19
    相关资源
    最近更新 更多