โทเค็น JWT ขนาดสูงสุดคือเท่าใด


114

ฉันต้องการทราบความยาวสูงสุดของ

โทเค็นเว็บ JSON (JWT)

ในรายละเอียดไม่มีข้อมูลเกี่ยวกับเรื่องนี้ อาจเป็นไปได้ว่าไม่มีข้อ จำกัด เรื่องความยาว?

คำตอบ:


71

ดังที่คุณกล่าวไม่มีความยาวสูงสุดที่กำหนดไว้ใน RFC7519 ( https://tools.ietf.org/html/rfc7519 ) หรือ RFC อื่น ๆ ที่เกี่ยวข้องกับ JWS หรือ JWE

หากคุณใช้รูปแบบ JSON Serialized หรือรูปแบบ JSON Flattened Serialized ไม่มีข้อ จำกัด และไม่มีเหตุผลที่จะกำหนดข้อ จำกัด

แต่ถ้าคุณใช้รูปแบบ JSON Compact Serialized (รูปแบบทั่วไป) คุณต้องจำไว้ว่าควรสั้นที่สุดเพราะส่วนใหญ่ใช้ในบริบทของเว็บ JWT 4kb เป็นสิ่งที่คุณควรหลีกเลี่ยง

ดูแลเฉพาะการอ้างสิทธิ์ที่เป็นประโยชน์และข้อมูลส่วนหัว


90

ฉันยังพยายามค้นหาสิ่งนี้

ผมว่า - ลองและให้แน่ใจว่ามันเป็นด้านล่าง 7kb

ในขณะที่ JWT กำหนดว่าไม่มีขีด จำกัด สูงสุดในข้อมูลจำเพาะ ( http://www.rfc-editor.org/rfc/rfc7519.txt ) เรามีข้อ จำกัด ในการปฏิบัติงานบางประการ เนื่องจาก JWT รวมอยู่ในส่วนหัว HTTP เราจึงมีขีด จำกัด สูงสุด ( SO: Maximum on http header values ) ที่ 8K บนเซิร์ฟเวอร์ปัจจุบันส่วนใหญ่

เนื่องจากรวมถึงส่วนหัวของคำขอทั้งหมด <8kb โดย 7kb จะให้พื้นที่สำหรับส่วนหัวอื่น ๆ ในปริมาณที่เหมาะสม ความเสี่ยงที่ใหญ่ที่สุดสำหรับขีด จำกัด นั้นคือคุกกี้ (ส่งในส่วนหัวและอาจมีจำนวนมาก)

เนื่องจากมีการเข้ารหัสและ base64ed จึงมีการสูญเสียสตริง json ดั้งเดิมอย่างน้อย 33% ดังนั้นโปรดตรวจสอบความยาวของโทเค็นที่เข้ารหัสขั้นสุดท้าย

จุดสุดท้าย - พร็อกซีและอุปกรณ์เครือข่ายอื่น ๆ อาจใช้ขีด จำกัด โดยปริยายระหว่างทาง ...


2
มีเหตุผลที่เป็นประโยชน์ในการหลีกเลี่ยงโทเค็น "ขนาดใหญ่" ในช่วง 2-3kb หรือไม่
Samuel Elrod

1
@SamuelElrod น่าจะขึ้นอยู่กับความต้องการของแอปพลิเคชันของคุณ 2-3kb สำหรับทุกคำขอที่เกี่ยวข้องกับ JWT จะเพิ่มสัมภาระในปริมาณที่เหมาะสมที่จะนำขึ้นเครื่องทุกครั้ง หากสิ่งนั้นส่งผลกระทบต่อประสิทธิภาพการรับรู้ของผู้ใช้คุณจะ จำกัด สิ่งนั้น
แจ็ค

1
พยายามหลีกเลี่ยงการทำให้โทเค็นของคุณบวม ผมว่า 2-3k เริ่มใหญ่เกินไปแล้วคุณมีอะไรอยู่ในนั้น? โทเค็นปัจจุบันของฉันคือ 320 ไบต์
user2800708

4
ฉันกำลังพิจารณาใส่แผนที่สิทธิพิเศษในของฉัน จะมีข้อมูล JWT ทั่วไปของผู้ใช้ปัจจุบันรวมถึงแผนที่ที่มี user_id และประเภทสิทธิ์สำหรับผู้ใช้ทั้งหมดที่พวกเขามีสิทธิ์ สิ่งนี้สามารถเติบโตได้ในทางทฤษฎีโดยไม่มีขอบเขต
เนท

1
น่าสนใจตอนนี้ฉันกำลังพิจารณาที่จะขุดแผนที่สิทธิพิเศษ ตอนนี้แผนของฉันคือใช้วิธีที่ไร้เดียงสาและตักมันเป็นอาร์เรย์ JSON และหากเป็นปัญหาฉันจะพยายามบรรจุเนื้อหาในรูปแบบไบนารีในอนาคต
Ciantic

5

เมื่อใช้herokuส่วนหัวจะ จำกัด ไว้ที่ 8k ขึ้นอยู่กับจำนวนข้อมูลที่คุณใช้บน jwt2 ซึ่งจะเข้าถึงได้ คำขอเมื่อมีขนาดใหญ่เกินไปจะไม่แตะอินสแตนซ์โหนดของคุณเราเตอร์ heroku จะวางไว้ก่อนเลเยอร์ API ของคุณ ..

เมื่อประมวลผลคำขอที่เข้ามาเราเตอร์จะตั้งค่าบัฟเฟอร์การรับ 8KB และเริ่มอ่านบรรทัดคำขอ HTTP และส่วนหัวของคำขอ แต่ละอันมีความยาวได้สูงสุด 8KB แต่รวมกันได้มากกว่า 8KB คำขอที่มีบรรทัดคำขอหรือบรรทัดส่วนหัวที่ยาวกว่า 8KB จะถูกทิ้งโดยเราเตอร์โดยไม่ถูกส่ง

ดู: Heroku Limits

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.