sha*_* gh 1 authentication node.js jwt
我将在 node js 中使用 JWT 实现我的身份验证方法。我搜索了一段时间以寻找不同的身份验证方法,最终决定使用 JWT。但是,我对基于 JWT 的身份验证感到困惑。
这是我的问题:我们应该通过 HTTPS 发送我们的 JWT 吗?如果是,那我们为什么要使用 JWT?为什么不在没有 JWT 的情况下通过 HTTPS 发送所有需要的信息?
换句话说,当没有 HTTPS 存在安全问题(如中间人攻击)时,使用 JWT 进行身份验证的原因是什么?是否有任何其他身份验证方法可以在不使用 HTTPS 的情况下完美运行?
在这里,您混合了两个不同的协议级别。
HTTPS(或者更确切地说 TLS - 传输级安全)是一个传输层 - 数据传输管道,确保您与合法服务器进行通信,并且没有人可以读取或更改交换的数据。HTTPS 不关心数据本身(例如身份验证)
JWT 通常用作描述客户端身份和其他属性的有效负载(数据本身)的一部分。
最常见的是,您同时需要 - JWT 来确保身份验证或授权,以及 TLS/HTTPS 以确保没有人可以窃取或更改您的 JWT 令牌或数据。
HTTPS 可以提供客户端身份验证,但客户端需要拥有它的客户端密钥对和证书,这不是真正免费或易于管理的(例如,这是电子身份证的工作方式,或者我经常在服务器到服务器场景中看到它)。