我需要知道
的最大长度JSON Web令牌(JWT)
在规格中没有关于它的信息。可能是这样,长度没有限制吗?
答案 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