JWT検証ツール
JSONWeb Tokenが本物で、まだ有効かどうかを確認します。トークンとともに、HMACシークレット、PEM公開鍵、証明書、JWK、またはJWKS全体を貼り付けてください。検証ツールはjoseライブラリで署名を確認し、expとnbfを現在時刻および任意の時刻許容差と照合して、デコード済みのヘッダーとクレームの横に明確な判定を表示します。algがnoneのトークンは受け付けません。
よくある質問
検証ツールでは何を確認しますか?
指定された鍵で署名を確認し、expクレームとnbfクレームを現在時刻と照合します。署名が一致し、どちらの時刻確認にも失敗しなかった場合にのみ、有効と判定されます。iss、aud、subなどのクレームはペイロードに表示されますが、想定値との照合は行われません。
どの鍵を貼り付けられますか?
HS256、HS384、HS512の場合は、共有シークレットをテキストまたはoct JWKとして貼り付けてください。RSA、EC、EdDSAトークンの場合は、PEM公開鍵(SPKIまたはPKCS #1)、X.509証明書、公開または秘密JWK、最大50個の鍵を含むJWKS、または秘密PEM鍵を貼り付けてください。秘密PEM鍵の場合、公開部分のみが使用されます。
JWKSから適切な鍵はどのように選ばれますか?
トークンヘッダーにkidがある場合、セット内で同じkidを持つ鍵が使用され、一致する鍵がないときはエラーにkidが示されます。kidがない場合、セットには鍵がちょうど1つ含まれている必要があります。これは、ほとんどのサーバーがjwks_uriドキュメントから鍵を選ぶ方法と同じです。
アルゴリズムオプションは何をしますか?
「トークンのalgを使用」を選ぶと、アルゴリズムはトークンヘッダーから取得されますが、鍵もそのアルゴリズムに適合している必要があります。そのため、RSA公開鍵をHMACシークレットとして使うことはできません。特定のアルゴリズムを選ぶと、トークンがそのアルゴリズムを使用することも必須になります。これは、サーバーが想定するアルゴリズムを固定する方法です。別のalgを持つトークンは、両方の名前を示して拒否されます。
algがnoneのトークンが拒否されるのはなぜですか?
algがnoneのトークンには署名がないため、検証するものがなく、誰でも作成できてしまいます。このようなトークンを受け入れることは、JWTライブラリでよく知られた脆弱性です。この検証ツールは、有効な結果ではなくエラーとして報告します。
exp、nbf、クロック許容誤差はどのように機能しますか?
expが現在時刻以前の場合、トークンは期限切れと見なされます。nbfが現在時刻より後の場合は、まだ有効ではないと見なされます。0〜3600秒のクロック許容誤差を設定すると、サーバー間の時刻ずれを考慮して両方のチェックに猶予が加わります。存在するクレームが数値でない場合、トークンは無効になります。
署名が無効とはどういう意味ですか?
トークンが指定した鍵で署名されていないか、署名後にヘッダーまたはペイロードが変更されています。一致する公開鍵またはシークレットを、文字を正確に保って貼り付けたことと、トークン全体をコピーしたことを確認してください。デコードされたヘッダーとペイロードは引き続き表示されるので、比較できます。
どのアルゴリズムに対応していますか?
HS256、HS384、HS512、RS256、RS384、RS512、PS256、PS384、PS512、ES256、ES384、ES512、およびEd25519鍵を使うEdDSAに対応しています。RSA鍵は少なくとも2048ビットである必要があります。暗号化トークン(JWE)は復号されません。
トークンや鍵は保存されますか?
いいえ。トークンと鍵はこの検証のためにメモリ上でのみ使用され、ログ記録も保存もされません。公開鍵は共有しても安全ですが、HMACシークレットは慎重に扱い、漏えいした疑いがあるシークレットはローテーションしてください。
トークンと鍵の最大サイズはどれくらいですか?
トークンは最大65,536文字、鍵フィールドは最大262,144文字まで入力でき、大きなJWKSドキュメントにも対応します。トークンはドットで区切られた3つのbase64urlパートで構成され、ヘッダーにはalgメンバーを含むJSON、ペイロードにはJSONオブジェクトが必要です。