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

Bog*_*dan 91 jwt

我需要知道最大长度

JSON Web令牌(JWT)

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

pen*_*eri 74

我也一直想找到这个.

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

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

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

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

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

  • 我正在考虑在我的地方放置一张特权地图.它将包含当前用户的常用JWT信息,以及包含他们拥有权限的所有用户的user_id和权限类型的映射.这理论上可以无限制地增长. (4认同)
  • 是否有任何实际的理由避免2-3kb范围内的"大"代币? (2认同)
  • 尽量避免令牌膨胀。我想说 2-3k 已经太大了,你里面有什么?我当前的令牌是 320 字节。 (2认同)

Flo*_*lli 56

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

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

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

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


Tia*_*vêa 9

使用heroku 时,标头将限制在 8k。根据您在 jwt2 上使用的数据量,它将达到。当请求过大时,不会触及您的节点实例,heroku 路由器会在您的 API 层之前将其丢弃。

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

请参阅:Heroku 限制