2014-09-25 22 views

Trả lời

21

Như bạn đã nói, không có độ dài tối đa được xác định trong RFC7519 (https://tools.ietf.org/html/rfc7519) hoặc RFC khác có liên quan đến JWS hoặc JWE.

Nếu bạn sử dụng định dạng JSON được tuần tự hóa hoặc định dạng JSON được tuần tự hóa, không có giới hạn và không có lý do để xác định giới hạn. Tuy nhiên, nếu bạn sử dụng định dạng JSON Compact Serialized (định dạng phổ biến nhất), bạn phải nhớ rằng nó phải càng ngắn càng tốt vì nó được sử dụng chủ yếu trong ngữ cảnh web. JWT 4kb là thứ bạn nên tránh.

Cẩn thận chỉ lưu trữ các xác nhận quyền sở hữu và thông tin tiêu đề hữu ích.

34

Tôi cũng đã cố gắng tìm điều này.

Tôi muốn nói - hãy thử và đảm bảo đó là bên dưới 7kb.

Mặc dù JWT không xác định giới hạn trên trong thông số kỹ thuật (http://www.rfc-editor.org/rfc/rfc7519.txt) nhưng chúng tôi có một số giới hạn hoạt động. Là một JWT được bao gồm trong tiêu đề HTTP, chúng tôi có giới hạn trên (SO: Maximum on http header values) là 8K trên phần lớn các máy chủ hiện tại.

Vì điều này bao gồm tất cả Yêu cầu tiêu đề < 8kb, với 7kb cho số tiền hợp lý cho các tiêu đề khác. Nguy cơ lớn nhất đối với giới hạn đó sẽ là các cookie (được gửi trong các tiêu đề và có thể lớn).

Vì mã hóa và cơ sở được mã hóa có ít nhất 33% lãng phí của chuỗi json gốc, do đó, hãy kiểm tra độ dài của mã thông báo được mã hóa cuối cùng.

Một điểm cuối cùng - proxy và các thiết bị mạng khác có thể áp dụng một giới hạn abitrary trên đường đi ...

+2

Có bất kỳ lý do thực tế để tránh thẻ "lớn" trong khoảng 2-3kb? –

+0

@SamuelElrod nó có khả năng phụ thuộc vào yêu cầu của ứng dụng của bạn.2-3kb cho mỗi yêu cầu liên quan đến một JWT thêm một số lượng khá của hành lý để được đưa lên dây mỗi lần. Nếu điều đó ảnh hưởng đến hiệu suất của người dùng, thì bạn sẽ hạn chế điều đó. – Jack

+0

Cố gắng tránh làm đầy mã thông báo của bạn. Tôi muốn nói 2-3k đã trở nên quá lớn, bạn có gì trong đó? Mã thông báo hiện tại của tôi là 320 byte. – user2800708

0

Khi sử dụng Heroku header sẽ được giới hạn ở 8k. Tùy thuộc vào bao nhiêu dữ liệu bạn đang sử dụng trên jwt2 nó sẽ đạt được. Các yêu cầu, khi quá khổ, sẽ không chạm dụ nút của bạn, Heroku router sẽ thả nó trước lớp API của bạn ..

Khi xử lý một request đến, một router thiết lập một 8KB nhận đệm và bắt đầu đọc HTTP dòng yêu cầu và tiêu đề yêu cầu. Mỗi trong số này có thể dài tối đa 8KB, nhưng cùng nhau có thể nhiều hơn so với tổng số 8KB. Các yêu cầu có chứa dòng yêu cầu hoặc dòng tiêu đề dài hơn 8KB sẽ bị router hủy bỏ mà không bị gửi đi .

Xem: Heroku Limits

Các vấn đề liên quan