【问题标题】:HTTPS or JWT for authentication?HTTPS 还是 JWT 进行身份验证?
【发布时间】:2018-05-19 20:28:03
【问题描述】:

我将在节点 js 中使用 JWT 实现我的身份验证方法。 我一直在寻找不同的身份验证方法,最后决定使用 JWT。 但是我对基于 JWT 的身份验证感到困惑。

这是我的问题:我们应该通过 HTTPS 发送 JWT 吗?如果是,那我们为什么要使用 JWT 呢? 为什么不在没有 JWT 的情况下通过 HTTPS 发送所有需要的信息

换句话说,当没有 HTTPS 存在安全问题时(如中间人攻击),使用 JWT 进行身份验证的原因是什么?是否有任何其他身份验证方法可以在不使用 HTTPS 的情况下完美运行?

【问题讨论】:

  • 是的,您总是希望通过 HTTPS 发送 JWT。 JWT 不是 HTTPS 的替代品,它们是服务器端会话数据的替代品,因此您可以无状态地运行应用程序。

标签: node.js authentication jwt


【解决方案1】:

您在这里混合了两种不同的协议级别。

HTTPS(或者更确切地说是 TLS - 传输级安全性)是一个传输层 - 数据传输管道,可确保您与合法服务器进行通信,并且没有人可以读取或更改交换的数据。 HTTPS 不关心数据本身(例如身份验证)

JWT 通常用作描述客户端身份和其他属性的有效负载(数据本身)的一部分。

最常见的情况是两者都需要 - JWT 来确保身份验证或授权,以及 TLS/HTTPS 来确保没有人可以窃取或更改您的 JWT 令牌或数据。

HTTPS 可以提供客户端身份验证,但客户端需要拥有其客户端密钥对和证书,这不是真正免费或易于管理的(例如,这就是电子身份证的工作方式,或者我经常在服务器到服务器中看到它情景)。

【讨论】:

  • 谢谢,正如我所说,我们可以通过 https 以纯文本形式发送我们的信息吗?如果不是,我们为什么要再次使用 JWT?
  • @ShahinSoft 以纯文本形式发送而不是在 JWT 中加密将允许恶意客户端更改数据。例如,user_id: 1user_id: 2 可能会让他们授予自己管理员权限。
  • @ShahinSoft:恕我直言,为了确保完整性(客户端不会更改令牌),JWT 令牌至少需要签名。许多当前框架开箱即用地签署令牌
  • @ceejayoz 1) 当您基于 api 的令牌(不是 jwt,只是任何令牌)或基于会话构建身份验证系统时,您通常检查数据是否属于令牌/会话和如果您考虑安全性,此步骤是必须的 2)如果恶意客户端可以访问数据,它还可以访问组件以在客户端生成 jwt(恶意客户端可能是用户本人、3d 方浏览器、病毒​​,插件等)
  • @Eugene 在这种情况下,我们只谈论 https。将 http 与任何类型的令牌(基本身份验证、jwt、会话 cookie、..)一起使用是不安全的,没有机密性、完整性或真实性保证。如果您想在不受信任的环境中对任何重要的事情使用纯 http,则必须通过其他方式(例如 WS-Security)确保提到的属性
【解决方案2】:

扩展@gusto2

JWT 和 HTTPS 实现不同的目标。安全系统的三个主要组成部分。

  • C - 机密性 - 外人读取数据是否安全?
  • I - 完整性 - 数据是否安全,不会被外界篡改?
  • A - 真实性 - 数据是否来自正确的人

HTTPS 确保机密性和完整性。 JWT 有助于提高真实性。但是,您的工作是确保令牌 是有效的。这不是开箱即用的。

【讨论】:

    【解决方案3】:

    “为什么不在没有 JWT 的情况下通过 HTTPS 发送所有需要的信息?”

    我认为主要的一点是 Restful 或基于 API 的交互是无状态的。所以在所有交互服务器中都需要获取token才能知道真实性。为了确保所有请求都来自登录的真实用户的真实性,它需要获得相同的 JWT。

    因此,正如丹尼尔所说,对 OP 中问题的回答是为了真实性。

    在基于普通形式的请求中,我们不使用令牌,为什么?因为它是有状态的,我们将信息保存在会话或 cookie 中。但 API 是无状态的,因此需要发送一些令牌。

    【讨论】:

      猜你喜欢
      • 2016-11-22
      • 2016-04-07
      • 2017-10-07
      • 2023-03-27
      • 2021-05-29
      • 2017-07-30
      • 2018-06-30
      • 2018-08-03
      • 2021-02-06
      相关资源
      最近更新 更多