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

Posted

技术标签:

【中文标题】JWT 令牌基于仪表板应用程序的每个请求的身份验证【英文标题】:JWT token base authentication on each request for dashboard app 【发布时间】:2019-03-19 12:48:17 【问题描述】:

我想使用 JWT 创建一个登录系统并有以下问题:

1- 我的客户登录和我为他/她生成一个令牌并将令牌存储在本地存储中。现在如果其他人从这个人浏览器的本地存储复制这个令牌并粘贴到他/她(我的意思是黑客)浏览器本地存储中,这个黑客将能够登录吗?如果是,那安全吗?

2- 我将用户 ID 放入登录功能生成的令牌中。在发送到后端的每个请求上,我都会解码令牌并在其中找到 userId。现在我应该用什么来比较这个用户ID吗?例如在后端通过此用户 ID 检查是否有任何会话,甚至通过 DB 检查用户 ID?

3-我应该在本地存储中设置 JWT 令牌的过期时间吗?

【问题讨论】:

【参考方案1】:

1 - 将这些存储在 localStorage 中是安全的。如何防范Cross site scripting 攻击值得一试;对于高安全性环境尤其如此。用户复制和粘贴可能是一种不太可能的攻击,并且,如果用户可以物理访问进行复制和粘贴,则可能存在其他“漏洞”,例如仅使用浏览器存储的密码。

2 - JWT 加密声明中包含的用户 ID。用户无法更改此声明并使其保持有效(假设是强密钥),因此无需在其他地方进行检查。

3 - 是的!由于 JWT 中有一个声明(如用户角色),因此您不希望这些声明永远有效。此外,您希望有一种方法来确保用户重新验证他们的身份(即再次登录),以防万一出现问题/令牌被盗。当您对令牌设置过期时,您会强制执行此操作。

【讨论】:

以上是关于JWT 令牌基于仪表板应用程序的每个请求的身份验证的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring 和 JWT 进行基于令牌的身份验证

Sailsjs 基于 jwt 令牌的身份验证示例

混合身份验证 - 基于 Spring MVC 会话 + 基于 JWT 令牌

如何对 ASP.NET WebApi 的每个请求应用自定义验证到 JWT 令牌?

每个请求的 JWT 令牌验证?

在每个 WebSocket(或 TCP)请求中发送令牌