web-dev-qa-db-ja.com

jwt webトークンを暗号化する必要がありますか?

ユーザーに応答するアクセストークンとしてJWT Webトークンに関する記事を読んでいました。その一部は、ユーザーがWebトークンをデコードできるようにする必要があると述べています。

Webトークン全体を復号化するのは良い習慣ではないということですか?たとえば、次のJWT Webトークンをユーザーに返して、この情報をデコードできると仮定します。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

ただし、ユーザーがアクセストークンをデコードできるようにしたくないので、別の暗号化アルゴリズムを使用してすべてを次のように別のフォームに暗号化し、ユーザーに返します。

そのため、サーバーでこのアクセストークンを取得してデコードするときに、この新しいテキストを解読します。

クレームで使用可能な値(ユーザーIDなど)の一部をユーザーに公開したくない場合は、この方法で行うことをお勧めしますか?そうでない場合、選択肢は何ですか?

16
vincentsty

JWT( RFC7519 )は、発行者からオーディエンスにHTTP経由で安全にクレームを送信するためのコンパクトな方法です。

JWTは次のいずれかです。

ベアラ(クライアント)またはサードパーティから機密情報を隠したい場合は、JWSを暗号化するのが理にかなっています。

本当の質問は次のとおりです。聴衆はJWEをサポートしていますか?はいの場合、どのアルゴリズムがサポートされていますか?

21

JWTは「署名」されているため、その内容は改ざんから保護されています。無効にすることなくその内容を変更することはできません。

オプションでコンテンツを「暗号化」し、発行者(トークンを作成するエンティティ)と消費者(検証後にコンテンツを使用する予定のエンティティ)のみに表示されるようにすることができます。

そのための標準があります: [〜#〜] jwe [〜#〜]

5
Eugenio Pace