¿Cuál es el tamaño máximo del token JWT?

111

Necesito saber la longitud máxima de

Token web JSON (JWT)

En especificaciones no hay información al respecto. ¿Podría ser que no hay limitaciones de longitud?

Bogdan
fuente

Respuestas:

70

Como dijiste, no hay una longitud máxima definida en el RFC7519 ( https://tools.ietf.org/html/rfc7519 ) u otros RFC relacionados con JWS o JWE.

Si usa el formato JSON serializado o el formato JSON Flat Serialized, no hay ninguna limitación y no hay razón para definir una limitación.

Pero si usa el formato JSON Compact Serialized (formato más común), debe tener en cuenta que debe ser lo más corto posible porque se usa principalmente en un contexto web. Un JWT de 4kb es algo que debe evitar.

Tenga cuidado de almacenar solo reclamaciones útiles e información de encabezado.

Florent Morselli
fuente
86

También he intentado encontrar esto.

Yo diría: intente asegurarse de que esté por debajo de 7kb .

Si bien JWT no define ningún límite superior en la especificación ( http://www.rfc-editor.org/rfc/rfc7519.txt ), sí tenemos algunos límites operativos. Como un JWT está incluido en un encabezado HTTP, tenemos un límite superior ( SO: Máximo en valores de encabezado http ) de 8K en la mayoría de los servidores actuales.

Como esto incluye todos los encabezados de solicitud <8 kb, con 7 kb dando una cantidad razonable de espacio para otros encabezados. El mayor riesgo para ese límite serían las cookies (enviadas en encabezados y pueden aumentar de tamaño).

Como está cifrado y basado en 64, hay al menos un 33% de desperdicio de la cadena json original, así que verifique la longitud del token cifrado final.

Un último punto: los proxies y otros dispositivos de red pueden aplicar un límite arbitrario en el camino ...

penderi
fuente
2
¿Existe alguna razón práctica para evitar tokens "grandes" en el rango de 2-3 kb?
Samuel Elrod
1
@SamuelElrod, probablemente dependa de los requisitos de su aplicación. 2-3kb por cada solicitud que involucre un JWT agrega una cantidad decente de equipaje para llevar el cable cada vez. Si eso afecta el rendimiento percibido por el usuario, entonces lo limitaría.
Jack
1
Intenta evitar hinchar tu ficha. Yo diría que 2-3k ya se está volviendo demasiado grande, ¿qué tienes ahí? Mi token actual es de 320 bytes.
user2800708
4
Estoy considerando poner un mapa de privilegios en el mío. contendrá la información JWT común del usuario actual, así como un mapa que contiene el user_id y el tipo de privilegio para todos los usuarios para los que tienen privilegios. En teoría, esto podría crecer sin límite.
Nate May
1
Interesante, también estoy considerando hacer un mapa de privilegios en este momento. En este momento, mi plan es utilizar un enfoque ingenuo y colocarlos como una matriz JSON, y si es un problema, intentaré empaquetar el contenido en un formato binario en el futuro.
Ciantic
5

Cuando use heroku, el encabezado estará limitado a 8k. Dependiendo de la cantidad de datos que esté utilizando en jwt2, se alcanzará. La solicitud, cuando es de gran tamaño, no tocará su instancia de nodo, el enrutador heroku la dejará antes de su capa de API.

Al procesar una solicitud entrante, un enrutador configura un búfer de recepción de 8 KB y comienza a leer la línea de solicitud HTTP y los encabezados de solicitud. Cada uno de estos puede tener una longitud máxima de 8 KB, pero juntos pueden tener más de 8 KB en total. Las solicitudes que contienen una línea de solicitud o una línea de encabezado de más de 8 KB serán descartadas por el enrutador sin ser enviadas.

Ver: Límites de Heroku

Tiago Gouvêa
fuente