我想对我们的新REST API实现基于JWT的身份验证.但是由于在令牌中设置了到期,是否可以自动延长它?如果他们在那段时间内积极使用该应用程序,我不希望用户在每X分钟后需要登录.这将是一个巨大的用户体验失败.
但是延长过期会创建一个新令牌(旧令牌在到期之前仍然有效).每次请求后生成一个新令牌听起来很愚蠢.当多个令牌同时有效时,听起来像是一个安全问题.当然,我可以使用黑名单使旧的旧的无效,但我需要存储令牌.JWT的一个好处就是没有存储空间.
我发现Auth0是如何解决它的.它们不仅使用JWT令牌,还使用刷新令牌:https: //docs.auth0.com/refresh-token
但同样,要实现这一点(没有Auth0),我需要存储刷新令牌并保持其过期.那么真正的好处是什么?为什么不只有一个令牌(不是JWT)并在服务器上保持过期?
还有其他选择吗?使用JWT不适合这种情况吗?
我正在使用 JWT 创建一个 node.js 后端应用程序。对我来说,要求很简单,即授权令牌不应有任何到期时间。但是当用户更改密码时,我在使 JWT 无效的过程中遇到了问题。
当用户更改他的密码时,我将创建一个新的 JWT 令牌,并删除旧令牌,但用户仍然可以使用他的旧 JWT 令牌(来自其他登录的设备)并可以访问应用程序。
那么谁能告诉我如何避免这种情况?
我正在构建基于令牌的身份验证(Node.js 使用带有角度客户端的护照/JWT)。
用户输入他的凭据后,他会获得一个访问令牌,他在标头内的每个请求中发送该令牌(标头:bearer TOKEN)。
我不想在他的访问令牌每次到期时(我猜大约是每天)都提示登录请求,我听说过Refresh Tokens。刷新令牌永不过期(或很少过期)并且能够无限期更新令牌。当访问令牌即将过期时,客户端可以通过发送其刷新令牌来发送更新请求以获取新的访问令牌。
我不明白一些事情,我可能会遗漏一些东西:
长期/永不过期的刷新令牌如何不会破坏拥有短期访问令牌的安全性。
Cookie 可以被窃取和使用,直到它们过期。令牌是短暂的,所以它们更安全,但如果我提供一个长期的刷新令牌,我就失去了使用令牌的优势。
注意:我知道刷新令牌是在初始登录时发送的,因此不能在每个请求中被欺骗,但如果它们在初始请求中被欺骗,它们就很容易受到攻击。
jwt ×4
node.js ×2
security ×2
token ×2
access-token ×1
api ×1
javascript ×1
spring ×1
spring-boot ×1