当前位置: 首页 > 知识库问答 >
问题:

node.js(express.js)中登录的访问令牌和刷新令牌的概念和用法

曾丰茂
2023-03-14

访问令牌的期限为7天,如果client在3天内返回,则通过现有的访问令牌对用户进行身份验证。

如果访问令牌已经超过3天,服务器将使用user_id查询存储在数据库中的刷新令牌。此时,如果刷新令牌有效,服务器将尝试重新发布7天访问令牌。

我想用这种方式来管理用户,这样做对吗?

共有1个答案

薛望
2023-03-14

听起来您想要实现用于身份验证的完整OAuth工作流。我建议您不要使用这种复杂性,除非您的应用程序确实需要这种复杂性。对于单个API,如果您发出一个JWT令牌并将其传递给使用者,那么应用程序将在请求中使用该令牌,服务器将验证该令牌。

但是,如果您的应用程序将被许多设备(浏览器、移动、桌面,甚至其他服务器)使用,并且假设您需要额外的安全性,那么Oauth可能会有回报。在这种情况下,您应该将刷新令牌提供给用户,而不是自动更新它们。否则,想象有人偷了别人的(过时的)代币……它会自动更新!则该人员将代表其他人获得对系统的访问权。

我推荐您使用express和OAuth的这个包:https://www.npmjs.com/package/Express-OAuth-Server

 类似资料:
  • 我已经阅读了JWT和访问令牌和刷新令牌。我知道您必须在很短的时间(分钟)内设置访问令牌过期,并在过期时使用刷新令牌获取新的访问令牌。 我不清楚三件事: 谁检查访问令牌是否过期?客户端是否通过发送过期的访问令牌和刷新来检查并请求新的访问代码? 谁检查刷新令牌是否过期?(显然刷新令牌也需要过期,尽管需要更长的时间才能过期)。 在我看来,如果刷新令牌过期,则必须提示用户重新登录。在某些情况下(移动应用)

  • 这是我的身份验证流程: 用户登录后收到两个令牌(具有过期时间的访问令牌和没有过期时间的刷新令牌) 对于每个用户,刷新令牌存储在数据库中名为refreshTokens的json列中(这是一个数组) 在客户端,访问令牌和刷新令牌都存储在本地存储器上 当需要验证用户时,如果访问令牌过期,将使用刷新令牌创建一个新的访问令牌,并将其发送回用户并保持用户登录 当用户注销时,数据库中存储的刷新令牌(在refre

  • null 很抱歉太啰嗦了。 提前谢了。

  • https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=your_app_client_id&response_type=code&redirect_uri=https%3a%2f%2flogin.microsoftonline.com%2fcommon%2foauth2%2fnativeclient&res

  • 我有一个基于OAuth2的授权服务器。与访问令牌一起发送的还有刷新令牌。 我可以使用访问令牌获得一个资源,当它过期时,我使用刷新令牌请求一个新的资源。 不过,我也可以用刷新令牌获取资源...是Oauth2的典型行为吗?我以为这个刷新令牌只用于请求新的访问令牌,而不是用于获取受保护的资源。 多谢了。