我需要验证jwt吗?
Do I need to verify jwt?
这是我的场景,我生成了一个 jwt 令牌并将该令牌以 1 小时 TTL 存储在 redis 中。
现在我看到大多数教程都使用 jwt.verify 来验证令牌..
我知道他们正在验证令牌是否真实
为什么我需要使用jwt.verify..为什么我不能使用redis.exists来检查令牌是否真实..
他们中的大多数人说,我们可以使用 jwt 主要功能是不需要使用 db 来检查用户和过期..
但在我的场景中,我无法将所有内容都存储在令牌中。所以我使用 Redis 来存储带有会话信息的令牌。
问题是
1.所以我不应该在这种情况下使用jwt。
2.我可以跳过jwt.verify吗?
我是node新手..
假设 Redis 服务器是安全的并且您自己生成了 JWT(这里似乎就是这种情况),您不需要验证它。一旦创建,将其存储在缓存中并稍后检索,您无需再次验证它,因为您知道它不会在 Redis 缓存中被篡改。
只有在收到由第 3 方生成的 JWT 时,您才需要验证它们的真实性。
另一方面,如果您要将 JWT 分发给您无法控制的第 3 方应用程序和客户端,那么您必须确保一旦它们被重播给您,它们就不会被篡改,方法是验证签名(或与存储在 Redis 缓存中的签名进行二进制比较)和(在使用时)检查 exp
声明中的到期时间戳。
在没有任何验证的情况下,第 3 方可能会向您的 API 发送请求,并且在大多数情况下,这些请求很可能会变成中间人攻击。记录服务器上生成的所有令牌,然后对每个传入请求进行身份验证是一种很好的安全做法。
JWT 可以帮助您快速检索有关调用者的信息,而无需访问数据库(redis 也是数据库)。
使用客户端 applications/external 服务使用的 JWT 时,您必须始终验证它们以确保您是生成它们的人并且它们没有被篡改。
存储在 JWT 中的常见信息是用户名、真实姓名、组等。在您的场景中,您可以使用 JWT 存储一个包含所需信息的 redis 密钥。可能是你总是会点击 redis 来获取你想要的信息,所以 JWT 不会为你的案例增加很多价值,但它可能是这样你可以使用 JWT 编写更智能的代码,只会点击redis 在某些情况下,例如。如果用户有这个权利,或者我们是否在 redis 中存储了关于这个用户的东西(缺少 JWT 令牌中的 redis 密钥)
您是唯一可以评估您的场景和 JWT 实用性的人,但不要急于忽略它们,因为它们提供了很好的 perfomance/security 开箱即用的改进。
这是我的场景,我生成了一个 jwt 令牌并将该令牌以 1 小时 TTL 存储在 redis 中。 现在我看到大多数教程都使用 jwt.verify 来验证令牌..
我知道他们正在验证令牌是否真实
为什么我需要使用jwt.verify..为什么我不能使用redis.exists来检查令牌是否真实..
他们中的大多数人说,我们可以使用 jwt 主要功能是不需要使用 db 来检查用户和过期..
但在我的场景中,我无法将所有内容都存储在令牌中。所以我使用 Redis 来存储带有会话信息的令牌。
问题是 1.所以我不应该在这种情况下使用jwt。 2.我可以跳过jwt.verify吗?
我是node新手..
假设 Redis 服务器是安全的并且您自己生成了 JWT(这里似乎就是这种情况),您不需要验证它。一旦创建,将其存储在缓存中并稍后检索,您无需再次验证它,因为您知道它不会在 Redis 缓存中被篡改。
只有在收到由第 3 方生成的 JWT 时,您才需要验证它们的真实性。
另一方面,如果您要将 JWT 分发给您无法控制的第 3 方应用程序和客户端,那么您必须确保一旦它们被重播给您,它们就不会被篡改,方法是验证签名(或与存储在 Redis 缓存中的签名进行二进制比较)和(在使用时)检查 exp
声明中的到期时间戳。
在没有任何验证的情况下,第 3 方可能会向您的 API 发送请求,并且在大多数情况下,这些请求很可能会变成中间人攻击。记录服务器上生成的所有令牌,然后对每个传入请求进行身份验证是一种很好的安全做法。
JWT 可以帮助您快速检索有关调用者的信息,而无需访问数据库(redis 也是数据库)。 使用客户端 applications/external 服务使用的 JWT 时,您必须始终验证它们以确保您是生成它们的人并且它们没有被篡改。
存储在 JWT 中的常见信息是用户名、真实姓名、组等。在您的场景中,您可以使用 JWT 存储一个包含所需信息的 redis 密钥。可能是你总是会点击 redis 来获取你想要的信息,所以 JWT 不会为你的案例增加很多价值,但它可能是这样你可以使用 JWT 编写更智能的代码,只会点击redis 在某些情况下,例如。如果用户有这个权利,或者我们是否在 redis 中存储了关于这个用户的东西(缺少 JWT 令牌中的 redis 密钥)
您是唯一可以评估您的场景和 JWT 实用性的人,但不要急于忽略它们,因为它们提供了很好的 perfomance/security 开箱即用的改进。