私はいくつかのブログ投稿を読み、秘密鍵を秘密にしておくのは難しいことを発見しました。JWTの作成に対称アルゴリズムを使用する場合、ジェネレーターはJWTを作成および検証する能力を持っています。これは、誤用される可能性がある場所のようです。
これにより、RSAベースの画像(JWT作成用の非対称アルゴリズム)がもたらされます。これらのJWTは、JWTを作成するための単一の権限が必要な場合に適しています。
いつHMACベースのJWTを使用する必要がありますか?
あなたが例のシナリオを与えることができればそれはとてもいいでしょう。
秘密鍵を持つサーバーがあります。別の当事者に何らかのタイプのクレーム(例えば、ユーザーに認証済みであることを示すトークンを与えることができる)を与えたいので、それに署名し、署名されたクレームをその当事者に渡します。その後、彼らは後でその主張を提示し、あなたは確認することができます:
Authentication:秘密を共有しなかったと想定して署名したこと、そして...
Data Integrity:データが変更されていないこと。
another当事者が確認する必要があるというクレームを送信する場合は、RSAなどの非対称デジタル署名アルゴリズムを使用します。これはNon-Repudiationと呼ばれ、notHMACのプロパティです。
別の例:別のサーバーに後日返送すると思われるデータを送信しているが、サーバーがそのデータを改ざんしていないことを確認する必要がある。 HMACで署名できます。
結局、この質問は次と同等です"MACとDSAの違いは何ですか?"そして、そのトピックの下で多くの読み物があります。