2016-11-02 31 views
0

我很抱歉这个愚蠢的问题,但我是令牌使用新手,也许不明白的东西。JWT头部参数的用途是什么?

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

header 
payload 
signature 

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

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

我道歉,如果这是一个愚蠢的问题,在现实中,我们真的需要保留我们出于某些目的签名的方法的信息,但我还没有发现与解释为什么我们需要这样的信息。

回答

1

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

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

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

+0

谢谢你的帮助!我没有想过这个。这真的很有道理。 – Alexandr

相关问题