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

时间:2014-09-25 08:32:37

标签: jwt

我需要知道

的最大长度
  

JSON Web令牌(JWT)

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

3 个答案:

答案 0 :(得分:67)

我也一直试图找到这个。

我说 - 尽量确保低于7kb

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

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

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

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

答案 1 :(得分:44)

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

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

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

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

答案 2 :(得分:3)

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

  

处理传入请求时,路由器设置8KB接收   缓冲并开始读取HTTP请求行和请求标头。   这些中的每一个最多可以是8KB,但是一起可以更多   总共超过8KB。包含请求行或标题行的请求   超过8KB的路由器将被丢弃   调度。

请参阅:Heroku Limits