【问题标题】:What is the purpose of the JWT header parameter?JWT 标头参数的用途是什么?
【发布时间】:2016-11-02 21:19:04
【问题描述】:

我很抱歉这个愚蠢的问题,但我是令牌使用的新手,可能不明白一些东西。

我开始阅读 JWT,但我对它的结构感到困惑。文档说它包含三个部分:

header
payload
signature

我知道在有效负载中我们保留信息,在签名部分我们保留签名以进行有效负载检查。但是标题部分的目的是什么?它说它通常由两部分组成:令牌的类型,即 JWT,以及正在使用的哈希算法,例如 HMAC SHA256 或 RSA。

  1. 如果服务器已经签署了令牌,那么他就知道它使用哪种方法。因此,这对服务器来说不是有用的信息。它根本不会使用这些信息。
  2. 这不是给黑客的暗示吗?他们将知道您的服务器使用哪种方法。我不确定这是提高安全性的好习惯。

如果这是一个愚蠢的问题,我很抱歉,实际上我们确实需要为某些目的保留有关我们签名方法的信息,但我没有找到解释为什么我们需要这个的信息。

【问题讨论】:

    标签: token jwt digital-signature access-token signature


    【解决方案1】:

    JWT 的生产者可能有几种不同的可用方法来保护它。它可以使用具有特定算法或密钥长度的对称或非对称密钥,并且每个组合可能具有不同的密钥。此类信息可以包含在标头中,以便接收者知道使用哪个密钥和算法来验证和/或解密 JWT。

    接收方和发送方可能不受同一方控制,因此在这种情况下,它肯定是有用的信息,以便接收方知道如果发送方可以使用多种方法,如何验证/解密令牌。但即使在它由同一方控制的情况下,正如您所暗示的那样,它也可能允许加密算法、密钥或密钥长度的平滑升级。

    想象一下,您的服务器转而使用一个新的密钥对来签署它自己生成和使用的 JWT。然后您可能希望仍然能够验证现有的令牌 - 使用旧密钥签名 - 一段时间。在这种情况下,您需要知道在收到 JWT 时使用了哪个密钥。

    【讨论】:

    • 感谢您的帮助!我还没有考虑过。真的很有道理。
    猜你喜欢
    • 2012-06-03
    • 2022-01-21
    • 1970-01-01
    • 2010-10-01
    • 2018-07-20
    • 2018-12-08
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多