JWT标头参数的目的是什么?

时间:2016-11-02 21:19:04

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

我为这个愚蠢的问题感到抱歉,但我对使用令牌很新手,也许并不了解。

我开始阅读有关JWT的内容,我对它的结构感到困惑。文档说它有三个部分:

header
payload
signature

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

  1. 如果服务器已签署令牌,则他知道它使用的是哪种方法。因此,它不是服务器的有用信息。它根本不会使用这些信息。
  2. 这不是黑客的暗示吗?他们将知道您的服务器使用哪种方法。我不确定提高安全性是一个好习惯。
  3. 如果这是一个愚蠢的问题我很抱歉,实际上我们确实需要为某些目的保留有关签名方法的信息,但我还没有找到解释的信息,为什么我们需要这个。

1 个答案:

答案 0 :(得分:1)

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

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

想象一下,您的服务器转到一个新的密钥对,用于签署它生成并自行消耗的JWT。那么您可能仍希望能够验证现有的令牌 - 用旧密钥签名 - 一段时间。在这种情况下,您需要知道在收到JWT时用于签署JWT的密钥。