ChatGPT解决这个技术问题 Extra ChatGPT

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

jwt

我需要知道最大长度

JSON 网络令牌 (JWT)

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


C
Community

我也一直在努力寻找这个。

我会说 - 尝试确保它低于 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%,因此请检查最终加密令牌的长度。

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


是否有任何实际理由避免 2-3kb 范围内的“大”令牌?
@SamuelElrod 这可能取决于您的应用程序的要求。涉及 JWT 的每个请求 2-3kb 都会增加相当数量的行李,每次都要通过网络传输。如果这会影响用户感知的性能,那么您将对其进行限制。
尽量避免使您的令牌膨胀。我想说2-3k已经太大了,你里面有什么?我当前的令牌是 320 字节。
我正在考虑在我的里面放一张特权地图。它将包含当前用户的通用 JWT 信息,以及包含他们拥有权限的所有用户的 user_id 和权限类型的映射。这在理论上可以无限增长。
有趣的是,我现在也在考虑铲一张特权图。现在我的计划是使用幼稚的方法并将它们铲成 JSON 数组,如果这是一个问题,我将来会尝试以类似二进制的格式打包内容。
C
Community

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

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

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

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


T
Tiago Gouvêa

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

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

请参阅:Heroku Limits