我正在构建一个基于浏览器的Web应用程序,它使用Node服务器(带有Express),并使用OAuth 2.0与第三方API集成。我的应用程序本身没有任何授权,只使用第三方软件的身份验证(该应用程序本质上是该软件的扩展)。我知道出于安全考虑,我应该将访问令牌和刷新令牌存储在服务器上,但是如何记住每个用户并在从用户到服务器的多个API调用中使用他们的正确令牌呢?什么是最好、最安全的方式?
ac1kyiln1#
对于这个特殊的问题,有很多解决方案:
1.将令牌存储在您用于存储其他数据的常规数据库中:利弊:A.无需安装其他数据库即可轻松完成B.您不需要研究其他数据库和实现逻辑C.在存储实际数据的同一数据库上加载更多CRUD。D.一侧崩溃(由于任何原因,如CRUD操作负载..等)可能会导致整个系统停机。1.将令牌存储在不用于存储任何数据的单独数据库服务器中:利弊:答:您必须安装和监控一个单独的数据库服务器来执行此特定任务。B.您可能需要阅读和研究此数据库,才能在您的应用程序中安装和实现它。CRUD操作-此数据库的加载不会影响您的实际/主数据库。D.一个数据库崩溃不会影响另一个数据库。
这些是一些主要的实现类型,但仍然有很多实现类型,例如:在同一数据库服务器中创建单独的数据库用于身份验证,在两个数据库中存储所有令牌,以及仅使用auth数据库(辅助数据库用于身份验证)来获取用户的令牌等。
我更喜欢的是。
1.拥有存储所有与应用相关的数据的主数据库。1.创建缓存数据库(如Redis..)来存储代币。通过这种方式,我可以轻松快速地访问令牌(缓存数据库的速度要快得多),并且无论何时需要,我都可以轻松地通过代码或过期时间进行刷新。
希望这对你今天有帮助!..
1条答案
按热度按时间ac1kyiln1#
对于这个特殊的问题,有很多解决方案:
1.将令牌存储在您用于存储其他数据的常规数据库中:
利弊:
A.无需安装其他数据库即可轻松完成
B.您不需要研究其他数据库和实现逻辑
C.在存储实际数据的同一数据库上加载更多CRUD。
D.一侧崩溃(由于任何原因,如CRUD操作负载..等)可能会导致整个系统停机。
1.将令牌存储在不用于存储任何数据的单独数据库服务器中:
利弊:
答:您必须安装和监控一个单独的数据库服务器来执行此特定任务。
B.您可能需要阅读和研究此数据库,才能在您的应用程序中安装和实现它。
CRUD操作-此数据库的加载不会影响您的实际/主数据库。D.一个数据库崩溃不会影响另一个数据库。
这些是一些主要的实现类型,但仍然有很多实现类型,例如:在同一数据库服务器中创建单独的数据库用于身份验证,在两个数据库中存储所有令牌,以及仅使用auth数据库(辅助数据库用于身份验证)来获取用户的令牌等。
我更喜欢的是。
1.拥有存储所有与应用相关的数据的主数据库。
1.创建缓存数据库(如Redis..)来存储代币。
通过这种方式,我可以轻松快速地访问令牌(缓存数据库的速度要快得多),并且无论何时需要,我都可以轻松地通过代码或过期时间进行刷新。
希望这对你今天有帮助!..