私は認証をかなり詳細に処理するノードライブラリであるexpress-stormpathの作成者なので、ここでいくつかの情報を紹介します。
まず、JWTは通常暗号化されません。暗号化JWTsへの道がありますが(参照:JWEsを)、これは多くの理由のために実際には非常に一般的ではありません。
次に、あらゆる認証形式(JWTを使用するかどうかにかかわらず)は、MitM攻撃(中間者)攻撃の対象になります。これらの攻撃は、攻撃者がインターネット経由でリクエストを送信するときにネットワークトラフィックを表示できる場合に発生します。これはあなたのISPが見ることができるもの、NSAなどです。
これは、SSLが防止するのに役立つものです。コンピューターからのネットワークトラフィックを暗号化することにより、>認証時に一部のサーバーが、ネットワークトラフィックを監視しているサードパーティは、何らかの方法でトークン、パスワード、またはそのようなものを見ることができない限り、それらを見ることができません。サーバーのプライベートSSLキーのコピーを取得する(可能性は低い)。これが、すべての認証形式でSSLが必須である理由です。
ただし、誰かがあなたのSSLを悪用してトークンを表示できるとしましょう。質問に対する答えは「はい」です。攻撃者はそのトークンを使用してあなたになりすまし、サーバーにリクエストを送信することができます。
これがプロトコルの出番です。
JWTは認証トークンの1つの標準にすぎません。彼らはほとんど何にでも使用できます。JWTが優れている理由は、JWTに追加の情報を埋め込むことができ、誰もそれを悪用していないこと(署名)を検証できることです。
ただし、JWT自体は「セキュリティ」とは関係ありません。すべての意図と目的で、JWTはAPIキーとほぼ同じです。つまり、どこかのサーバーに対して認証するために使用するランダムな文字列だけです。
あなたの質問をより興味深いものにしているのは、使用されているプロトコルです(おそらくOAuth2)。
OAuth2が機能する方法は、クライアントに一時的なトークン(JWTなど)を与えて、短い期間のみの認証を行うように設計されているということです。
つまり、トークンが盗まれた場合、攻撃者はトークンを短期間しか使用できません。
OAuth2を使用する場合は、ユーザー名/パスワードまたはAPI資格情報を提供し、引き換えにトークンを取得することで、サーバーを頻繁に再認証する必要があります。
このプロセスは時々発生するため、トークンは頻繁に変更され、攻撃者が大きなトラブルを犯さずに常にあなたになりすますことが困難になります。
うまくいけば、これが役に立ちます^^