在每个API调用之前验证JWT令牌
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在每个API调用之前验证JWT令牌相关的知识,希望对你有一定的参考价值。
目前,我正在React的一个项目中工作,该项目具有受保护的路由(受JWT授权保护)。根据用户的权限,某些页面的呈现方式有所不同。这些权限在令牌有效负载中加密。由于可以对JWT令牌进行解密和更改,因此用户可以-[[理论上-更改令牌,以获得对他们实际上不应该访问的页面的访问权限。由于令牌失去了有效性,因此后端服务器将不会处理该特定用户的任何请求,因此不会造成任何损失。我仍然不希望用户仅通过更改JWT令牌就能够访问受保护的页面。我对此问题的解决方案是向验证令牌的端点发送请求。根据端点的响应,将进行第二次API调用,然后将返回受保护页面的所需数据。如果验证端点返回该令牌不再有效,则该用户将被重定向到登录页面。
登录>转到受保护的页面>验证令牌>访问受保护的页面登录>更改收到的JWT令牌>转到受保护的路由>验证令牌>错误>登录页面
现在我的问题是:这是解决此问题的好方法吗?有更好的方法吗?
非常感谢。 :)
答案
JWT令牌包含3个部分:- 标题
- 有效负载
- 签名
您建议的额外步骤不会执行任何操作。如果您的客户可以成功更改密钥,那么她可以轻松地绕过此步骤,并对受保护的资源进行API调用。
令牌验证步骤应在后端完成。
- 登录(前端)>转到受保护的路由(前端)>验证令牌(后端)>返回受保护的页面(后端) )
- 登录(前端)>更改收到的JWT令牌(前端)>转到受保护的路由(前端)>验证令牌(后端)>返回错误(后端)>登录页面(前端)
以上是关于在每个API调用之前验证JWT令牌的主要内容,如果未能解决你的问题,请参考以下文章
如何在前端的 Javascript Ajax API 调用中隐藏我的 JWT 令牌?