我将在节点js中使用JWT实现我的身份验证方法。 我正在寻找不同的身份验证方法,最后决定使用JWT。 但是我对基于JWT的身份验证感到困惑。
以下是我的问题:我们应该通过HTTPS发送JWT吗?如果是,那么我们为什么要使用JWT呢? 以及为什么不在没有JWT的情况下通过HTTPS发送所有需要的信息?
换句话说,如果没有HTTPS存在安全问题(如中间人攻击),使用JWT进行身份验证的原因是什么?有没有其他身份验证方法可以完美地工作而不使用HTTPS?
答案 0 :(得分:4)
这里混合了两种不同的协议级别。
HTTPS(或者说TLS - 传输级别安全性)是一个传输层 - 数据传输管道,确保您与合法服务器通信,并且没有人可以读取或更改交换的数据。 HTTPS并不关心数据本身(例如身份验证)
JWT通常用作描述客户端身份和其他属性的有效负载(数据本身)的一部分。
最常见的是,您需要两者 - JWT以确保身份验证或授权,以及TLS / HTTPS以确保没有人可以窃取或更改您的JWT令牌或数据。
HTTPS可以提供客户端身份验证,但客户端需要拥有其客户端密钥对和证书,这些证书并非真正免费或易于管理(例如,这是电子身份证的工作方式,或者我经常在服务器到服务器中看到它场景)。
答案 1 :(得分:0)
扩展@ gusto2
JWT和HTTPS实现了不同的目标。安全系统的三个主要组成部分。
HTTPS确保机密性和完整性。 JWT有助于提供真实性。但是,确保令牌是您的职责 是有效的。这不是开箱即用的。