web-dev-qa-db-ja.com

JWTはペイロード情報を暗号化します

私はJWT技術に不慣れで、それについて多くのことを読んでいます。

JWTには3つの部分があります。

  1. ヘッダー:アルゴリズムとトークンタイプ
  2. ペイロード:データ
  3. シークレットキーで検証される署名

ペイロード情報を暗号化することは可能ですか?たとえば、トークンに次のペイロード情報があるとします。

{
"iss": "joe",
"exp": "1300819380",
"data": {
    "id": "12",
    "userName": "PH",
    "qntRed": "7",
    "qntGrad": {
        "1": "800",
        "2": "858",
        "3": "950",
        "4": "745",
        "5": "981"
    }
}

そして、「qntGrad」が機密情報であるとしましょう。それも秘密鍵で暗号化することは可能ですか?それはまだJWTトークンですか?

実際、署名されたJWTだけでなく、RFCで記述されているいくつかのテクノロジーがあります。

あなたのケースでは、RFC7516(JWE)を読んでください。これらのJWEには5つの部分があります。

  • 保護されたヘッダー
  • 暗号化されたキー
  • 初期化ベクトル
  • 暗号文
  • 認証タグ

プラットフォームによっては、このような暗号化されたJWTの作成に役立つライブラリが見つかる場合があります。 PHPについては、すでにこれらのjoseを読み込んで作成できる a library と書いています。

18