哪种 oauth 令牌类型更适合基于节点 js 的应用程序。 JWT 还是不透明的?在哪里存储它们中的每一个

Posted

技术标签:

【中文标题】哪种 oauth 令牌类型更适合基于节点 js 的应用程序。 JWT 还是不透明的?在哪里存储它们中的每一个【英文标题】:Which oauth token type is better for node js based applications. JWTs or Opaque? Where to store each one of them 【发布时间】:2020-10-05 00:24:22 【问题描述】:

我正在使用 Open ID 连接协议在基于节点 js 的应用程序中对用户进行身份验证和授权。使用 Oauth2,我们可以使用两种类型的令牌格式 - JWT 和不透明令牌。哪一个更适合基于 Node JS 的应用程序? 这两种代币类型的存储策略应该是什么?将这两个令牌存储在会话cookie中是否很好

【问题讨论】:

【参考方案1】:

Node.js 没有更好的令牌类型,选择标准在别处。这一切都取决于您是否希望您的令牌保存信息,以及您是否想要一个无状态应用程序。

JWT 保存用户信息,这意味着您无需在身份验证成功后调用特定端点来检索用户信息。它也由后端签名,这意味着后端可以通过检查令牌的签名来验证令牌的真实性,并且不需要在两个请求之间的任何地方(即:会话存储或数据库中)存储令牌。在这方面,后端是无状态的

另一方面,不透明令牌更轻(每个经过身份验证的请求的网络开销更少),但它需要一个额外的请求来检索用户信息,并且它需要后端存储令牌以验证进一步的请求。

【讨论】:

感谢 Guerric,对于不透明的令牌,您提到了后端来存储它们。你的意思是数据库还是某种缓存或会话变量?我们不能将它们存储在会话 cookie 中吗? 如果你将它们存储在你的数据库中,那么你的后端是 stateless 这意味着它更接近于 RESTful,但你也可以将它们存储在会话 cookie 中,它会工作也很好,只要您的应用不需要水平可扩展性

以上是关于哪种 oauth 令牌类型更适合基于节点 js 的应用程序。 JWT 还是不透明的?在哪里存储它们中的每一个的主要内容,如果未能解决你的问题,请参考以下文章

哪种 DATATYPE 更适合使用 TEXT 或 VARCHAR?

用于 OAuth2 访问令牌生成的节点模块?

为啥基于令牌的身份验证更适合单页应用程序?

这是哪种类型的列表,我如何访问 tokenValue?

oAuth 2.0 访问令牌验证 node.js

哪种 DATATYPE 更适合使用 TEXT 或 VARCHAR?