JWT令牌的最大大小是多少?

JWT令牌的最大大小是多少?,jwt,Jwt,我需要知道最大的长度 JSON Web令牌(JWT) 在规范中没有关于它的信息。可能是这样,长度没有限制?正如您所说,RFC7519()或其他与JWS或JWE相关的RFC中没有定义最大长度 如果使用JSON序列化格式或JSON扁平序列化格式,则没有限制,也没有理由定义限制 但是如果您使用JSON压缩序列化格式(最常见的格式),您必须记住它应该尽可能短,因为它主要用于web上下文。4kb JWT是您应该避免的 注意只存储有用的声明和标题信息。我也一直在尝试查找这些信息 我会说-尝试并确保它低于7k

我需要知道最大的长度

JSON Web令牌(JWT)


在规范中没有关于它的信息。可能是这样,长度没有限制?

正如您所说,RFC7519()或其他与JWS或JWE相关的RFC中没有定义最大长度

如果使用JSON序列化格式或JSON扁平序列化格式,则没有限制,也没有理由定义限制

但是如果您使用JSON压缩序列化格式(最常见的格式),您必须记住它应该尽可能短,因为它主要用于web上下文。4kb JWT是您应该避免的


注意只存储有用的声明和标题信息。

我也一直在尝试查找这些信息

我会说-尝试并确保它低于7kb

虽然JWT在规范()中没有定义上限,但我们确实有一些操作限制。 由于JWT包含在HTTP头中,因此在大多数当前服务器上,我们的上限()为8K

因为这包括所有请求头<8kb,7kb为其他头提供了合理的空间。达到这一限制的最大风险是cookies(发送到标题中,并且可能会变大)

由于它是加密和Base64的,所以至少有33%的原始json字符串被浪费,所以请检查最终加密令牌的长度

最后一点-代理和其他网络设备可能会在这一过程中应用一个临时限制

使用heroku时,标头将限制在8k。这取决于您在jwt2上使用的数据量。当请求过大时,将不会接触到您的节点实例,heroku路由器将在您的API层之前删除它

当处理传入请求时,路由器设置8KB的接收 缓冲区,并开始读取HTTP请求行和请求头。 其中每一个的长度最多为8KB,但加在一起可能更大 总共超过8KB。包含请求行或标题行的请求 超过8KB的数据将被路由器丢弃,而不会被删除 派遣


请参阅:

是否有实际理由避免使用2-3kb范围内的“大型”令牌?@SamuelElrod这可能取决于应用程序的要求。对于每一个涉及JWT的请求2-3kb,每次都会增加相当数量的行李。如果这会影响用户感知的性能,那么您应该限制它。尽量避免使您的令牌膨胀。我想说2-3k已经太大了,你有什么?我当前的令牌是320字节。我正在考虑在我的令牌中放置一个特权映射。它将包含当前用户的公共JWT信息,以及一个包含用户id和所有用户权限类型的映射。理论上,这可以不受限制地增长。有趣的是,我现在也在考虑铲一张特权地图。现在我的计划是使用简单的方法,将它们作为JSON数组,如果有问题,我将尝试在将来以类似二进制的格式打包内容。