Berapa ukuran maksimum token JWT?

111

Saya perlu mengetahui panjang maksimum

Token Web JSON (JWT)

Secara spesifikasi belum ada informasi tentang itu. Bisa jadi, tidak ada batasan panjangnya?

Bogdan
sumber

Jawaban:

70

Seperti yang Anda katakan, tidak ada panjang maksimum yang ditentukan di RFC7519 ( https://tools.ietf.org/html/rfc7519 ) atau RFC lain yang terkait dengan JWS atau JWE.

Jika Anda menggunakan format JSON Serialized atau format JSON Flattened Serialized, tidak ada batasan dan tidak ada alasan untuk menentukan batasan.

Tetapi jika Anda menggunakan format JSON Compact Serialized (format paling umum), Anda harus ingat bahwa itu harus sesingkat mungkin karena ini terutama digunakan dalam konteks web. JWT 4kb adalah sesuatu yang harus Anda hindari.

Berhati-hatilah untuk hanya menyimpan klaim dan informasi header yang berguna.

Florent Morselli
sumber
86

Saya juga telah mencoba menemukan ini.

Saya akan mengatakan - coba dan pastikan itu di bawah 7kb .

Sementara JWT tidak menetapkan batas atas dalam spesifikasi ( http://www.rfc-editor.org/rfc/rfc7519.txt ) kami memiliki beberapa batasan operasional. Karena JWT disertakan dalam header HTTP, kami memiliki batas atas ( SO: Maksimum pada nilai header http ) 8K pada sebagian besar server saat ini.

Karena ini mencakup semua Permintaan header <8kb, dengan 7kb memberikan jumlah ruang yang wajar untuk header lainnya. Risiko terbesar dari batas itu adalah cookie (dikirim dalam header dan bisa menjadi besar).

Karena dienkripsi dan base64, setidaknya ada 33% pemborosan dari string json asli, jadi periksa panjang token terenkripsi terakhir.

Satu poin terakhir - proxy dan peralatan jaringan lainnya mungkin menerapkan batas yang sewenang-wenang di sepanjang jalan ...

penderi
sumber
2
Apakah ada alasan praktis untuk menghindari token "besar" dalam kisaran 2-3kb?
Samuel Elrod
1
@SamuelElrod kemungkinan besar tergantung pada persyaratan aplikasi Anda. 2-3kb untuk setiap permintaan yang melibatkan JWT menambahkan jumlah bagasi yang layak untuk dibawa melalui transfer setiap waktu. Jika hal itu memengaruhi kinerja yang dirasakan pengguna, Anda akan membatasinya.
Jack
1
Cobalah untuk menghindari membengkaknya token Anda. Saya akan mengatakan 2-3k sudah terlalu besar, apa yang Anda miliki di sana? Token saya saat ini adalah 320 byte.
pengguna2800708
4
Saya sedang mempertimbangkan untuk meletakkan peta hak istimewa di milik saya. itu akan berisi info JWT umum pengguna saat ini, serta peta yang berisi tipe user_id dan privilege untuk semua pengguna yang mereka miliki hak istimewanya. Ini secara teoritis dapat tumbuh tanpa ikatan.
Nate Mei
1
Menarik, saya juga mempertimbangkan untuk menyekop peta hak istimewa sekarang. Saat ini rencana saya adalah menggunakan pendekatan naif dan menyekopnya sebagai array JSON, dan jika itu masalah, saya akan mencoba mengemas konten dalam format seperti biner di masa mendatang.
Ciantic
5

Saat menggunakan heroku , header akan dibatasi pada 8k. Bergantung pada seberapa banyak data yang Anda gunakan di jwt2, data tersebut akan dapat dijangkau. Permintaan, jika ukurannya terlalu besar, tidak akan menyentuh instance node Anda, router heroku akan menjatuhkannya sebelum lapisan API Anda ..

Saat memproses permintaan masuk, router menyiapkan buffer penerimaan 8 KB dan mulai membaca baris permintaan HTTP dan header permintaan. Masing-masing dapat memiliki panjang maksimal 8KB, tetapi jika digabungkan dapat mencapai total lebih dari 8KB. Permintaan yang berisi baris permintaan atau baris header yang lebih panjang dari 8KB akan dibatalkan oleh router tanpa dikirim.

Lihat: Batas Heroku

Tiago Gouvêa
sumber