如何在google api中处理多个用户的新刷新令牌事件

问题描述 投票:0回答:1

我正在使用 NodeJS 为 Web 应用程序开发 MVP。我使用 gmail/google API 进行身份验证和登录。我已经设置了登录和 OAuth2.0 并且它正在工作。但是,文档中有一部分我不确定。这是我参考的文档

https://github.com/googleapis/google-api-nodejs-client

特别是“处理刷新令牌”部分。

它说我应该监听新的refresh_tokens的令牌事件并将新的refresh_token存储在数据库中

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);
});

我不明白的是你怎么知道哪个refresh_token是针对哪个用户的?您是否必须在此过程的早期关联唯一标识符,然后在事件发生时检查标识符?

node.js oauth-2.0 google-api google-oauth gmail-api
1个回答
0
投票

是的,如果要将其存储在数据库中,您需要创建一个唯一标识符并将其作为值映射到刷新令牌(建议这样做)。

请记住,刷新令牌会授予另一个访问令牌,而不需要用户进行身份验证。这意味着如果您将刷新令牌与其他用户的请求一起使用,则您将授予其他用户访问权限!

创建唯一标识符的常见方法是使用会话令牌或会话 ID 作为唯一标识符。您可以将其用作映射到数据库中刷新令牌的键。 请参阅此处了解一些说明和注意事项: OWASP 会话管理备忘单

您还需要考虑如何存储该唯一标识符。因此您知道何时在正确的时间使用关联的刷新令牌。这取决于您的用例,但如果您使用它来避免要求用户重新进行身份验证,则通常会安全地存储在 cookie 中。因此,下次用户重新访问您的应用程序时,您可以检查 cookie 并在数据库中查找唯一标识符。

来自同一张备忘单。

MDN 有一些关于 cookie 的有用文档。

OWASP Nodejs cookie 安全性

如果您正在做一些事情,例如在用户不在场时为他们运行某种自动化,那么它看起来会有所不同。加密用户的电子邮件或您使用的任何标识符是一种方法。使用其结果作为密钥/会话令牌。当然,这是一个简化的视图,但它给了你一个想法。

© www.soinside.com 2019 - 2024. All rights reserved.