JSON Web Token

Prev Next

Classic/VPC環境で利用できます。

認証に必要な JSON Web Token(JWT)認証方式を説明します。

Header(ヘッダ)

Headerの構成は次の通りです。

  • alg: 署名(signature)作成時に使用したハッシュアルゴリズム
    • HS256サポート(HMAC SHA256)
  • typ: トークンタイプ
    • JWT形式のみサポート

Headerの使用例は次の通りです。

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

Payload(内容)

Payloadの構成は次の通りです。

  • Path: トークンの適用対象 URLパス
    • 必須入力項目
    • *使用可能
  • exp: トークン有効期限切れ時間(expiration)
    • オプション値
    • NumericDate形式 例) unix timestamp
  • nbf: トークン活性時間(Not Before)
    • オプション値
    • NumericDate形式 例) unix timestamp
  • cip: クライアント IPアドレス対象
    • オプション値
    • CIDR使用可能

Payloadの使用例は次の通りです。

{
    "path": "/foo/bar/example.mp4", 
    "exp": 1672455600, 
    "nbf": 1669258800, 
    "cip": "192.168.200.0/24"
}

Signature(署名)

Signatureを作成する方法は次の通りです。

  1. Headerと Payloadをそれぞれ Base64 URLでエンコードします。

    # as-is
    { 
        "alg": "HS256", 
        "typ": "JWT" 
    } 
    
    # to-be 
    {"alg":"HS256","typ":"JWT"} 
    
    # Base64 URLエンコード 
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
    
    参考

    Base64 URLでエンコードするプロセスで JSONの空白やエンター値は削除されます。

  2. ピリオド(.)を区切り文字として使用してエンコードされた Headerと Payloadをつなげます。

  3. つなげた文字列を Secure keyと一緒にアルゴリズム(HMAC SHA256)でハッシュ値を抽出します。

参考

Signatureの作成と検証を https://jwt.io/でテストできます。
globaledge-jwt-1

使用形式

使用形式と参照できる例は次の通りです。

  • Query Token
  • JWTトークンをクエリ文字列に使用してリクエスト可能
  • 使用例
    # Query形式 
    https://example.com/foo/bar/example.mp4?<JWTトークン名>=<JWT token> 
    
    # 例
    https://example.com/foo/bar/example.mp4?globaledgejwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiL2Zvby9iYXIvZXhhbXBsZS5tcDQiLCJleHAiOjE2NzI0NTU2MDAsIm5iZiI6MTY2OTI1ODgwMCwiY2lwIjoiMTkyLjE2OC4yMDAuMC8yNCJ9.65cikBSh0rsrH1-2Q87HSK7v3-KExYe-B1wpaTZTQ2o