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

问题描述 投票:78回答:3

我需要知道最大长度

JSON Web令牌(JWT)

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

jwt
3个回答
44
投票

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

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

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

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


67
投票

我也一直想找到这个。

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

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

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

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

最后一点 - 代理和其他网络设备可能会沿途应用任意限制......


2
投票

使用heroku时,标题将限制为8k。根据您在jwt2上使用的数据量,它将达到。超大时,请求不会触及您的节点实例,heroku路由器将在您的API层之前删除它。

处理传入请求时,路由器设置8KB接收缓冲区并开始读取HTTP请求行和请求标头。这些中的每一个最多可以是8KB,但总共可以超过8KB。包含请求行或标题行超过8KB的请求将被路由器删除而不会被分派。

见:Heroku Limits

© www.soinside.com 2019 - 2024. All rights reserved.