随机生成的令牌与 JSON Web 令牌

信息安全 验证 令牌 json
2021-08-26 05:12:04

我正在尝试保护对我的 Web 服务器的访问。

我一直在实施 JSON Web 令牌身份验证,在其中我随机生成一个密钥并将其与该用户相关联。然后,密钥将用于对 JSON Web 令牌进行编码。然后用户将使用 JSON Web 令牌访问我的 Web 服务器。

我也在考虑这个更简单的方法。是否有理由不只是随机生成一个密钥并将用户与之关联。然后用那个进行身份验证?

1个回答

无论哪种方式都可以,它只取决于您是否希望身份验证是无状态的。

JWT 的优点:

  • 无国籍。
  • 很少或没有数据库开销。
  • 单个后端组件可以单独验证令牌,只需知道密钥即可。

缺点:

  • 由于身份验证状态存储在客户端,因此您不能在服务器端使登录无效。

根据您的应用程序的风险偏好,这可能是您将所有身份验证逻辑移动到服务器端的一个足够大的劣势。

请注意,您可以将两者结合起来,并让经过身份验证的令牌在客户端提供经过验证的服务器端(即 JWT 内的令牌由 MAC 验证,并且令牌本身存储在数据库中)。这可以防止您的会话表被攻击暴露的情况,因为攻击者无法在不知道用于验证 MAC 的密钥的情况下直接使用会话标识符来劫持会话。