繁体   English   中英

如何使用 Node js 存储每个用户的访问和刷新令牌(oAuth2)

[英]How to store each users Access- and Refresh Token (oAuth2) using Node js

我正在构建一个基于浏览器的 web 应用程序,该应用程序使用节点服务器(带有 express)并使用 oAuth 2.0 与第三方 api 集成。 我的应用程序本身没有任何授权,仅使用第三方软件的认证(应用程序本质上是该软件的扩展)。 我知道我应该将访问令牌和刷新令牌存储在服务器上以确保安全,但是我如何记住每个用户并在从用户到服务器的多个 api 调用中使用他们的正确令牌? 什么是最好和最安全的方式?

这个特定问题有很多解决方案:

  1. 将令牌存储在用于存储其他数据的常规数据库中
    优点和缺点:
    A. 无需安装其他数据库的简单方法
    B. 不需要研究其他数据库和实现逻辑
    C。 在存储实际数据的同一数据库上加载更多 CRUD。
    D. 一侧崩溃(由于 CRUD 操作负载等任何原因)可能会导致整个系统停机。

  2. 将令牌存储在您不用于存储任何数据的单独数据库服务器中:
    优点和缺点:
    A. 您必须为这个特定任务安装和监控单独的数据库服务器。
    B. 您可能必须阅读和研究此数据库才能在您的应用程序中安装和实现它。
    C。 CRUD 操作 - 此数据库的负载不会影响您的实际/主数据库。 D. 一个数据库崩溃不会影响另一个数据库。

这些是一些主要的实现类型,仍然有很多,例如:在同一个数据库服务器中创建一个单独的数据库以进行身份验证,将所有令牌存储在两个数据库中并仅使用 auth 数据库(用于身份验证的辅助数据库)进行获取用户代币等

我更喜欢的是...

  1. 拥有用于存储所有应用程序相关数据的主数据库。
  2. 创建一个缓存数据库(如 Redis.. )来存储令牌。
    通过这种方式,我以一种简单快捷的方式访问令牌(缓存数据库要快得多),并且我可以在需要时通过代码或通过过期时间轻松刷新。

希望今天能帮到你...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM