Quelle est la taille maximale du jeton JWT?

111

J'ai besoin de connaître la longueur maximale de

Jeton Web JSON (JWT)

Dans les spécifications, il n'y a aucune information à ce sujet. Peut-être que, il n'y a pas de limites de longueur?

Bogdan
la source

Réponses:

70

Comme vous l'avez dit, il n'y a pas de longueur maximale définie dans la RFC7519 ( https://tools.ietf.org/html/rfc7519 ) ou dans d'autres RFC liées à JWS ou JWE.

Si vous utilisez le format JSON Serialized ou JSON Flattened Serialized, il n'y a pas de limitation et il n'y a aucune raison de définir une limitation.

Mais si vous utilisez le format JSON Compact Serialized (format le plus courant), vous devez garder à l'esprit qu'il doit être le plus court possible car il est principalement utilisé dans un contexte Web. Un JWT 4kb est quelque chose que vous devez éviter.

Veillez à ne stocker que les déclarations et informations d'en-tête utiles.

Florent Morselli
la source
86

J'ai également essayé de trouver ceci.

Je dirais - essayez de vous assurer qu'il est inférieur à 7 ko .

Alors que JWT ne définit aucune limite supérieure dans la spécification ( http://www.rfc-editor.org/rfc/rfc7519.txt ), nous avons des limites opérationnelles. Comme un JWT est inclus dans un en-tête HTTP, nous avons une limite supérieure ( SO: Maximum sur les valeurs d'en-tête http ) de 8K sur la majorité des serveurs actuels.

Comme cela inclut tous les en- têtes de requête <8 ko, 7 ko donnant une quantité raisonnable de place pour les autres en-têtes. Le plus grand risque à cette limite serait les cookies (envoyés dans les en-têtes et peuvent devenir volumineux).

Comme il est crypté et base64, il y a au moins 33% de gaspillage de la chaîne json d'origine, alors vérifiez la longueur du jeton crypté final.

Un dernier point - les proxys et autres appareils réseau peuvent appliquer une limite abitraire en cours de route ...

penderi
la source
2
Existe-t-il une raison pratique d'éviter les jetons «volumineux» de l'ordre de 2 à 3 Ko?
Samuel Elrod
1
@SamuelElrod, cela dépend probablement des exigences de votre application. 2-3kb pour chaque demande impliquant un JWT ajoute une quantité décente de bagages à apporter sur le fil à chaque fois. Si cela affecte les performances perçues par l'utilisateur, vous limiteriez cela.
Jack le
1
Essayez d'éviter de gonfler votre jeton. Je dirais que 2-3k devient déjà beaucoup trop gros, qu'est-ce que vous avez là-dedans? Mon jeton actuel est de 320 octets.
user2800708
4
J'envisage de mettre une carte des privilèges dans la mienne. il contiendra les informations JWT communes de l'utilisateur actuel, ainsi qu'une carte contenant le user_id et le type de privilège pour tous les utilisateurs pour lesquels ils ont des privilèges. Cela pourrait théoriquement grandir sans limite.
Nate
1
Intéressant, j'envisage également de pelleter une carte des privilèges en ce moment. Pour le moment, mon plan est d'utiliser une approche naïve et de les pelleter en tant que tableau JSON, et si c'est un problème, j'essaierai de compresser le contenu dans un format de type binaire à l'avenir.
Ciantic
5

Lors de l'utilisation d' heroku, l'en-tête sera limité à 8k. En fonction de la quantité de données que vous utilisez sur jwt2, elles seront atteintes. La requête, lorsqu'elle est surdimensionnée, ne touchera pas votre instance de nœud, le routeur heroku la déposera avant votre couche API.

Lors du traitement d'une requête entrante, un routeur configure un tampon de réception de 8 Ko et commence à lire la ligne de requête HTTP et les en-têtes de requête. Chacun de ceux-ci peut avoir une longueur maximale de 8 Ko, mais ensemble peut dépasser 8 Ko au total. Les demandes contenant une ligne de demande ou une ligne d'en-tête de plus de 8 Ko seront abandonnées par le routeur sans être distribuées.

Voir: Limites d'Heroku

Tiago Gouvêa
la source