每个请求的 JWT 令牌验证?

Posted

技术标签:

【中文标题】每个请求的 JWT 令牌验证?【英文标题】:JWT token validation on each request? 【发布时间】:2021-09-17 06:50:41 【问题描述】:

我已经在节点中开发了一个简单的带有 jwt 身份验证的 bakend 服务器,但我仍然有一个问题:在用户正确登录并将令牌保存在客户端之后,服务器是否应该在每个用户请求时验证令牌?例如,当访问/profile 路由(将用户带到个人资料页面)时,或者当用户通过向/posts/create 路由发送帖子请求来创建问题时,我应该使用jwt.verify(...) 方法来检查是否令牌每次都正确吗?发送 jwt 访问令牌而不是刷新令牌是否也正确,或者这是一种不好的做法?

【问题讨论】:

您的问题应该集中在一个问题上,以便得到妥善解决。您必须为每次调用验证令牌,任何人都可以向您的 API 发出请求,而无需通过您的登录页面 是的,每次都验证! 发送 jwt 访问令牌而不是刷新令牌是否也正确,或者这是一种不好的做法? - 你的意思是什么? @AndreaDattero 这就是我们期望在 Stack Overflow 上提出问题的方式,您应该创建单独的问题,以便他们可以有单独的具体答案。 *** 确实希望帮助您回答您的问题,但我们希望答案对其他人有用,而不仅仅是您***.com/help/how-to-ask @AndreaDattero 感谢您的链接。 即使用户不再登录到授权服务器,您也可以使用刷新令牌来获取新的访问和 ID 令牌。通过使用刷新令牌,您无需在用户启动应用程序时重新进行身份验证。相反,如果有任何可用的刷新令牌,您可以使用它以静默方式获取新的访问令牌。 - 我还没有阅读完整的文章,只是瞥了一眼并查看了有关刷新令牌的内容。到目前为止,没有什么令人惊讶的。使用访问令牌访问受保护的资源,使用刷新令牌更新访问令牌。 从中我看不到刷新令牌的使用方式/位置而不是访问令牌。两种代币都有其作用/目的,反映在它们的名称中。并且访问令牌不用于身份验证,而是用于授权。您在通过身份验证后获得访问令牌,然后获得访问资源的授权。 【参考方案1】:

是的,您应该验证每个请求。那就是调用中间件。在第一步中,您检查身份验证。之后,您可以使用它进行授权。您可以在 JWT 中写入角色、一些权限或其他信息。

【讨论】:

以上是关于每个请求的 JWT 令牌验证?的主要内容,如果未能解决你的问题,请参考以下文章

JWT 令牌基于仪表板应用程序的每个请求的身份验证

如何在 CodeIgniter 3.x 中为来自客户端的每个请求验证 JWT 令牌

根据 JWT 身份验证令牌中的声明验证来自请求的 IP

在微服务架构的每个服务中验证访问令牌 (JWT)

验证微服务架构的每个服务中的访问令牌(JWT)

在每个API调用之前验证JWT令牌