JWTトークンの最大サイズはいくつですか?


111

の最大長を知る必要があります

JSON Web Token(JWT)

スペックにはそれに関する情報はありません。それは、長さに制限はありませんか?

回答:


70

あなたが言ったように、RFC7519(https://tools.ietf.org/html/rfc7519)またはJWSまたはJWEに関連する他のRFCで定義されている最大長はありません。

JSON SerializedフォーマットまたはJSON Flattened Serializedフォーマットを使用する場合、制限はなく、制限を定義する理由もありません。

ただし、JSON Compact Serialized形式(最も一般的な形式)を使用する場合は、主にWebコンテキストで使用されるため、できるだけ短くする必要があることに注意してください。4kb JWTは避けるべきものです。

役立つクレームとヘッダー情報のみを保存するように注意してください。


86

私もこれを見つけようとしました。

私は言うでしょう-試してみて、それが7kb未満であることを確認してください。

JWTは仕様(http://www.rfc-editor.org/rfc/rfc7519.txt)に上限を定義していませんが、いくつかの操作上の制限があります。JWTはHTTPヘッダーに含まれているため、現在のサーバーの大部分で上限(SO:httpヘッダー値の最大値)は8Kです。

これには、8 kb未満のすべてのリクエストヘッダーが含まれるため、7 kbは他のヘッダーのために十分なスペースを提供します。この制限に対する最大のリスクはCookieです(ヘッダーで送信され、大きくなる可能性があります)。

暗号化され、base64化されているため、元のjson文字列が少なくとも33%無駄になっているので、最終的な暗号化トークンの長さを確認してください。

最後のポイント-プロキシやその他のネットワークアプライアンスは、途中で任意の制限を適用する可能性があります...


2
2〜3 kbの範囲の「大きな」トークンを回避する実用的な理由はありますか?
Samuel Elrod

1
@SamuelElrodは、アプリケーションの要件によって異なります。JWTを含むすべてのリクエストに対して2〜3 kbは、適切な量の手荷物を追加して、毎回回線を介して転送します。それがユーザーの知覚パフォーマンスに影響を与える場合は、それを制限します。
ジャック

1
トークンを膨らまないようにしてください。2-3kはすでに大きくなりすぎていると思いますが、そこには何がありますか?私の現在のトークンは320バイトです。
user2800708

4
私は特権マップを私の中に入れることを考えています。これには、現在のユーザーの共通JWT情報と、特権を持つすべてのユーザーのuser_idおよび特権タイプを含むマップが含まれます。これは理論的には限りなく成長する可能性があります。
ネイト5月

1
興味深いことに、私は現在、特権のマップを作成することも検討しています。今の私の計画は、素朴なアプローチを使用し、それらをJSON配列としてシャベル化することです。これが問題である場合は、将来的にコンテンツをバイナリのような形式でパックすることを試みます。
Ciantic 2017年

5

herokuを使用する場合、ヘッダーは8kに制限されます。jwt2で使用しているデータの量に応じて、データに到達します。リクエストがオーバーサイズの場合、ノードインスタンスに触れないため、herokuルーターはAPIレイヤーの前にそれをドロップします。

着信要求を処理するとき、ルーターは8KBの受信バッファーをセットアップし、HTTP要求行と要求ヘッダーの読み取りを開始します。これらのそれぞれの長さは最大8KBですが、合計で8KBを超えることもあります。8KBより長いリクエスト行またはヘッダー行を含むリクエストは、ディスパッチされずにルーターによってドロップされます。

参照:Herokuの制限

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.