JWT 토큰의 최대 크기는 얼마입니까?


111

최대 길이를 알아야합니다.

JSON 웹 토큰 (JWT)

사양에는 그것에 대한 정보가 없습니다. 길이 제한이 없습니까?

답변:


70

말했듯이 RFC7519 ( https://tools.ietf.org/html/rfc7519 ) 또는 JWS 또는 JWE와 관련된 기타 RFC에 정의 된 최대 길이는 없습니다 .

JSON Serialized 형식 또는 JSON Flattened Serialized 형식을 사용하는 경우 제한이 없으며 제한을 정의 할 이유가 없습니다.

그러나 JSON Compact Serialized 형식 (가장 일반적인 형식)을 사용하는 경우 주로 웹 컨텍스트에서 사용되기 때문에 가능한 한 짧아야한다는 점을 명심해야합니다. 4kb JWT는 피해야 할 것입니다.

유용한 클레임 및 헤더 정보 만 저장하도록주의하십시오.


86

나는 또한 이것을 찾으려고 노력하고 있습니다.

나는 말하고 싶습니다-그것이 7kb 미만 인지 확인하십시오 .

JWT는 사양 ( http://www.rfc-editor.org/rfc/rfc7519.txt )에 상한선을 정의하지 않지만 일부 작동 제한이 있습니다. JWT가 HTTP 헤더에 포함되어 있으므로 현재 대부분의 서버에서 상한 ( SO : Maximum on http header values )이 8K입니다.

여기에는 8kb 미만의 모든 요청 헤더가 포함 되며 7kb는 다른 헤더를위한 적절한 공간을 제공합니다. 이 제한에 대한 가장 큰 위험은 쿠키 (헤더로 전송되고 커질 수 있음)입니다.

암호화되고 base64로되어 있기 때문에 원래 json 문자열의 최소 33 % 낭비가 있으므로 최종 암호화 된 토큰의 길이를 확인하십시오.

마지막으로, 프록시 및 기타 네트워크 어플라이언스는 도중에 임의의 제한을 적용 할 수 있습니다.


2
2-3kb 범위에서 "대형"토큰을 피해야하는 실질적인 이유가 있습니까?
사무엘 Elrod

1
@SamuelElrod 응용 프로그램의 요구 사항에 따라 다를 수 있습니다. JWT와 관련된 모든 요청에 ​​대해 2-3kb는 매번 유선으로 가져갈 적절한 양의 수하물을 추가합니다. 이것이 사용자가인지하는 성능에 영향을 미치는 경우이를 제한합니다.
Jack

1
토큰이 부풀어 오르지 않도록하십시오. 2-3k가 이미 너무 커지고 있다고 말하고 싶습니다. 거기에 무엇이 있습니까? 내 현재 토큰은 320 바이트입니다.
user2800708

4
내 특권 맵을 넣는 것을 고려하고 있습니다. 여기에는 현재 사용자의 공통 JWT 정보는 물론 권한이있는 모든 사용자에 대한 user_id 및 권한 유형이 포함 된 맵이 포함됩니다. 이것은 이론적으로 제한없이 성장할 수 있습니다.
Nate May

1
흥미롭게도 지금 당장 특권지도를 삽질하는 것도 고려 중입니다. 지금 내 계획은 순진한 접근 방식을 사용하여 JSON 배열로 삽질하는 것이며, 문제가 발생하면 나중에 콘텐츠를 바이너리 형식으로 압축하려고합니다.
Ciantic

5

heroku를 사용할 때 헤더는 8k로 제한됩니다. jwt2에서 사용하는 데이터의 양에 따라 도달 할 수 있습니다. 요청이 너무 크면 노드 인스턴스에 영향을주지 않고 heroku 라우터는 API 레이어보다 먼저 드롭합니다.

들어오는 요청을 처리 할 때 라우터는 8KB 수신 버퍼를 설정하고 HTTP 요청 라인과 요청 헤더를 읽기 시작합니다. 각각의 길이는 최대 8KB 일 수 있지만 합쳐서 총 8KB 이상이 될 수 있습니다. 요청 라인 또는 8KB보다 긴 헤더 라인을 포함하는 요청은 발송되지 않고 라우터에 의해 삭제됩니다.

참조 : Heroku 제한

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.