切勿使用Json Web令牌进行身份验证

切勿使用Json Web令牌进行身份验证

切勿使用Json Web令牌进行身份验证

我一直在与JWT(JSON网络令牌)打交道很长一段时间,我看到很多人试图用它们作为会话和cookie的替代品。但是在做了一些广泛的研究之后,我结识了更多的人,他们分享我的意识形态,认为Json网络令牌将被证明是会话和cookie的可靠替代品。

首先,让我们快速了解如何在用户登录系统中使用JWT。

JWT登录系统

谈到JWT,使用JWT代替传统登录系统的第一个好理由就是我们可以在每个请求上传递JWT并且JWT将包含用户ID。如果JWT有效,即由服务器本身创建,则服务器接受它并让用户执行所需的操作。这样,您可以省去点击数据库的麻烦,检查是否让我登录Cookie并管理会话。

潜在问题)

即使对我来说,JWT也非常有吸引力,直到我深入思考并意识到一些潜在的问题,使得JWT显得无用身份验证。

您在JWT中存储的内容

需要注意的是,JWT最终必须以cookies或网络存储的形式存储在用户的设备中。因此,任何有权访问设备和令牌的人不仅可以阅读JWT,还可以阅读JWT的内容。震惊吗?那么,对于不了解JWT工作的人来说,这是一个现实检查。所以希望唯一可以存储的就是用户标识,即使这样你每次都必须点击数据库来检查用户可以执行的操作,比如角色等。

让我保持登陆状态

保持登录令牌通常以cookie的形式存储,并且可以帮助您避免每次打开网站时都输入密码。一般程序是令牌存储在用于启动会话的cookie中。但用JWT替换会话意味着你完全处于令牌的摆布之中。想一想,如果某人的设备被盗,他们会失去他们的标记,现在任何拥有该标记的人都可以登录。而且它甚至不像您可以从已批准令牌的列表中删除该令牌,因为如果您这样做,这意味着服务器将不得不在每个请求中检查该令牌的存在。同样,这会在使用令牌时造成更多的伤害。

速度

速度在登录系统中非常重要。有些人现在会指出解码JWT可能比从数据库中获取数据要快,但不应该忘记JWT必须在每次请求时都解码,这与传统方法不同,后者只需要触摸数据库一次在一开始的时候。

结论

智威汤逊是一项出色的技术,但它们不是登录系统的替代品。考虑到我们在本文中讨论的事实,在登录流程中使用它们将是一场完全灾难。这些只是我的看法,请随时在下面的评论部分添加到这个主题。

上一篇:【记录】ASP.NET MVC 4/5 Authentication 身份验证无效


下一篇:Gradle多项目配置的一个demo