我为这个愚蠢的问题感到抱歉,但我对使用令牌很新手,也许并不了解。
我开始阅读有关JWT的内容,我对它的结构感到困惑。文档说它有三个部分:
header
payload
signature
据我所知,在有效载荷中我们保留信息,在签名部分我们保留有效载荷检查的签名。但是标题部分的目的是什么?它表示通常它由两部分组成:令牌的类型,即JWT,以及正在使用的散列算法,例如HMAC SHA256或RSA。
如果这是一个愚蠢的问题我很抱歉,实际上我们确实需要为某些目的保留有关签名方法的信息,但我还没有找到解释的信息,为什么我们需要这个。
答案 0 :(得分:1)
JWT的制作人可能有几种不同的可用方法来保护它。它可以使用具有特定算法或密钥长度的对称或非对称密钥,并且每个组合可以具有不同的密钥。此类信息可以包含在标头中,以便接收方知道使用哪个密钥和算法来验证和/或解密JWT。
接收方和发送方可能不受同一方控制,因此在这种情况下它肯定是有用的信息,以便接收方知道如果发送方可能使用多种方法,则如何验证/解密令牌。但即使在它由同一方控制的情况下,如您所暗示的那样,它也可以允许加密算法,密钥或密钥长度的平滑升级。
想象一下,您的服务器转到一个新的密钥对,用于签署它生成并自行消耗的JWT。那么您可能仍希望能够验证现有的令牌 - 用旧密钥签名 - 一段时间。在这种情况下,您需要知道在收到JWT时用于签署JWT的密钥。