ウェブセキュリティを知る

JSON Web Token

JWTとは?

JWTは、情報を安全に転送するためのコンパクトで自己完結型な手段を提供するオープンスタンダードです。主に認証と情報のやり取りに使用されます。

JWTの構造

JWTはドット(.)で区切られた3つのセクションから成り立っています。

Header(ヘッダ)

JWTのヘッダは、アルゴリズムやトークンのタイプなどのメタ情報を含みます。例:

{
  "alg": "HS256",
  "typ": "JWT"
}

2.2 Payload(ペイロード) ペイロードには実際の情報が含まれます。クレーム(Claim)と呼ばれ、組み込みのクレーム(標準的なもの)とカスタムクレーム(ユーザー定義のもの)があります。 例:

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

Signature

署名はヘッダ、ペイロード、秘密鍵を使用して生成され、トークンが改ざんされていないことを確認します。

JWTの利用

JWTは、認証や情報交換など多くの場面で利用されます。代表的なケースとしては、OAuth認証、セキュアなAPI通信、シングルサインオン(SSO)が挙げられます。

JWTのメリット

  • 軽量でコンパクト
  • 自己完結型であり、情報が改ざんされていないことが保証される
  • 汎用性があり、様々な用途で利用可能
  • 分散型アーキテクチャに適した設計: JWTは独立して機能し、クライアントとサーバー間の分散型システムで使用するのに適しています。
  • 独自の拡張性: クレームを追加することで、独自のデータをJWTに含めることができます。

JWTの検討事項

  • 秘密鍵の安全な管理が必要
  • 有効期限(exp)の適切な設定が必要
  • ペイロードの機密性: JWTはBase64URLエンコードされているため、ペイロードの内容が暗号化されていません。機密性が必要な場合は暗号化が必要です。

証明書

それぞれのファイル形式を開くための具体的な手順や参考リンクを以下に示します:

  1. .cer (証明書):

    • Windows:
      • 証明書を開く: .cer ファイルをダブルクリックして証明書を開くことができます。
      • 証明書のインポート: このマイクロソフトのドキュメント を参照して、certmgr.msc を使用して証明書をインポートできます。
    • macOS:
      • キーチェーンアクセスを開き、ファイルメニューから証明書をインポートします。
    • Linux:
      • OpenSSL コマンドラインツールを使用して証明書をインポートすることができます。詳細については、このリンク を参照してください。
  2. .pvk (秘密鍵):

    • Windows:
      • .pvk ファイルを直接開くことは推奨されません。Microsoftが提供するツールやAPIを使用して秘密鍵を操作します。例えば、MakeCert ツールや、.pvk ファイルをインポートするためのツールやAPIがあります。
    • macOSLinux:
      • .pvk ファイルは一般的に Windows 環境で使用されるため、macOS や Linux では一般的には使用されません。
  3. .pfx (PKCS#12形式):

    • Windows:
      • 証明書管理ツール(certmgr.msc)を開き、.pfx ファイルをインポートします。詳細な手順については、このリンク を参照してください。
    • macOS:
      • キーチェーンアクセスを開き、ファイルメニューから.pfx ファイルをインポートします。詳細な手順については、このリンク を参照してください。
    • Linux:
      • OpenSSL コマンドラインツールを使用して.pfx ファイルをインポートすることができます。詳細については、このリンク を参照してください。