JWT belirtecinin maksimum boyutu nedir?


111

Maksimum uzunluğunu bilmem gerekiyor

JSON Web Belirteci (JWT)

Spesifikasyonlarda bunun hakkında bilgi yok. Olabilir, uzunluk sınırlaması yok mu?

Yanıtlar:


70

Dediğiniz gibi, RFC7519'da ( https://tools.ietf.org/html/rfc7519) tanımlanmış bir maksimum uzunluk yoktur. ) veya JWS veya ile ilgili diğer RFC'lerde .

JSON Serileştirilmiş biçimini veya JSON Düzleştirilmiş Diziselleştirilmiş biçimini kullanırsanız, herhangi bir sınırlama yoktur ve bir sınırlama tanımlamak için bir neden yoktur.

Ancak JSON Compact Serialized formatını (en yaygın format) kullanıyorsanız, esas olarak web bağlamında kullanıldığı için mümkün olduğunca kısa olması gerektiğini aklınızda bulundurmalısınız. 4kb JWT, kaçınmanız gereken bir şeydir.

Yalnızca yararlı iddiaları ve başlık bilgilerini saklamaya özen gösterin.


86

Ben de bunu bulmaya çalışıyorum.

Diyorum ki - deneyin ve 7kb'nin altında olduğundan emin olun .

JWT spesifikasyonda üst sınır tanımlamasa da ( http://www.rfc-editor.org/rfc/rfc7519.txt ) bazı operasyonel sınırlarımız var. Bir JWT bir HTTP başlığına dahil edildiğinden, bir üst sınırımız vardır ( SO: http başlık değerlerinde maksimum , mevcut sunucuların çoğunda 8K'lık ) vardır.

Bu, tüm İstek başlıklarını <8kb'yi içerdiğinden, 7kb diğer başlıklar için makul bir yer sağlar. Bu sınırın en büyük riski çerezlerdir (başlıklar halinde gönderilir ve büyüyebilir).

Şifreli ve base64 olduğu için, orijinal json dizesinin en az% 33 israfı vardır, bu nedenle son şifrelenmiş belirtecin uzunluğunu kontrol edin.

Son bir nokta - proxy'ler ve diğer ağ cihazları, yol boyunca bir abitrary limiti uygulayabilir ...


2
2-3 kb aralığında "büyük" tokenlardan kaçınmak için herhangi bir pratik neden var mı?
Samuel Elrod

1
@SamuelElrod, muhtemelen uygulamanızın gereksinimlerine bağlıdır. Bir JWT'yi içeren her talep için 2-3 kb, her seferinde kabloyla getirilecek makul miktarda bagaj ekler. Bu, kullanıcının algıladığı performansı etkiliyorsa, bunu sınırlarsınız.
Jack

1
Simgenizi şişirmekten kaçınmaya çalışın. 2-3k zaten çok büyüyor diyebilirim, içinde ne var? Mevcut jetonum 320 bayt.
user2800708

4
Benimkine bir ayrıcalık haritası koymayı düşünüyorum. geçerli kullanıcının ortak JWT bilgisinin yanı sıra, ayrıcalıklarına sahip oldukları tüm kullanıcılar için user_id ve ayrıcalık türünü içeren bir harita içerecektir. Bu teorik olarak sınırsız büyüyebilir.
Nate,

1
İlginç, şu anda bir ayrıcalıklar haritası da kürek çekmeyi düşünüyorum. Şu anda planım saf bir yaklaşım kullanmak ve bunları JSON dizisi olarak uygulamak ve eğer bu bir sorunsa, içeriği gelecekte ikili benzeri bir biçimde paketlemeye çalışacağım.
Ciantic

5

Heroku kullanırken başlık 8k ile sınırlandırılacaktır. Jwt2'de ne kadar veri kullandığınıza bağlı olarak ulaşılacaktır. İstek, aşırı büyük olduğunda düğüm örneğinize dokunmayacak, heroku yönlendiricisi API katmanınızdan önce bırakacaktır.

Gelen bir isteği işlerken, bir yönlendirici 8KB'lik bir alma tamponu kurar ve HTTP istek satırını ve istek başlıklarını okumaya başlar. Bunların her biri en fazla 8 KB uzunluğunda olabilir, ancak birlikte toplamda 8 KB'tan fazla olabilir. 8KB'den daha uzun bir istek satırı veya başlık satırı içeren istekler, gönderilmeden yönlendirici tarafından bırakılır.

Bakınız: Heroku Limitleri

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.