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


111

我需要知道的最大长度

JSON Web令牌(JWT)

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

Answers:


70

如您所说,在RFC7519(https://tools.ietf.org/html/rfc7519)或与JWS或JWE相关的其他RFC中没有定义最大长度。

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

但是,如果您使用JSON Compact Serialized格式(最常用的格式),则必须记住,它应该尽可能短,因为它主要用于Web上下文。您应避免使用4kb的JWT。

注意仅存储有用的声明和标头信息。


86

我也一直试图找到这个。

我会说-尝试确保它在7kb以下

尽管JWT在规范(http://www.rfc-editor.org/rfc/rfc7519.txt)中没有定义上限,但我们确实有一些操作上的限制。由于JWT包含在HTTP标头中,因此当前大多数服务器上的上限(SO:http标头值的最大值)为8K。

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

由于它是经过加密和base64加密的,因此至少有33%的原始json字符串被浪费掉了,因此请检查最终加密令牌的长度。

最后一点-代理和其他网络设备可能会在此过程中施加任意限制...


2
是否有任何实际原因要避免2-3kb范围内的“大”令牌?
塞缪尔·埃罗德

1
@SamuelElrod它可能取决于您的应用程序要求。对于涉及JWT的每个请求,每个2-3kb会增加相当数量的行李,每次都要通过电汇。如果那影响了用户感知的性能,那么您将对此加以限制。
杰克

1
尝试避免使令牌膨胀。我想说2-3k已经变得太大了,您在那里有什么?我当前的令牌是320个字节。
user2800708 '16

4
我正在考虑在我的特权地图。它将包含当前用户的通用JWT信息,以及一个映射,其中包含其具有特权的所有用户的user_id和特权类型。从理论上讲,这可以无限发展。
Nate

1
有趣的是,我也正在考虑铲除特权地图。现在,我的计划是使用幼稚的方法,并将其作为JSON数组使用,如果有问题,我将来会尝试将内容打包为类似二进制的格式。
Ciantic

5

使用heroku时,标头限制为8k。取决于您在jwt2上使用的数据量是多少。当请求过大时,该请求将不会接触您的节点实例,heroku路由器会将其丢弃到您的API层之前。

在处理传入请求时,路由器会设置一个8KB的接收缓冲区,并开始读取HTTP请求行和请求标头。每个文件的最大长度为8KB,但总和可能超过8KB。包含大于8KB的请求行或标题行的请求将被路由器丢弃,而不会被分派。

另请:Heroku限制

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.