token-auth#

token-authを設定することで、有効な認可用トークン(以降、単にトークンと記載します)をリクエストに付加してアクセスしたエンドユーザーのみが、配信設定されたコンテンツにアクセスできます。認可が必要なコンテンツへアクセスする場合、クエリパラメーター・Cookie・リクエストヘッダーのいずれかにトークンを設定します。トークンの生成については、お客様が行う必要があります。詳細は機能説明書を参照してください。

paramsパラメーター(必須)で指定可能な設定は以下の通りです。

  • tokenName (必須)

    • トークン名です。エッジサーバは、クエリパラメーター・Cookie・リクエストヘッダーからここで指定したトークン名を探し、検証をおこないます。トークン名として指定可能な文字は正規表現で次の通りとなります。
      ^([a-zA-Z][a-zA-Z0-9-_]*)$
  • tokenDelimiter (オプション)

    • トークン文字列内の項目を区切るデリミタ文字です。未指定の場合、「~」がデフォルト値となります。以下の文字は、デリミタ文字として指定できません。
      a-z A-Z & 0-9 = & / \ : %
  • aclDelimiter (オプション)

    • アクセスリスト内のパラメーターを区切るデリミタ文字です。未指定の場合、「!」がデフォルト値となります。以下の文字は、デリミタ文字として指定できません。
      a-z A-Z & 0-9 = & / \ : %
  • hmacAlgorithm (必須)

    • トークンのMAC(Message Authentication Code)値の算出に使用するアルゴリズムです。MD5、SHA1、SHA256が指定できますが、セキュリティ観点からSHA256を推奨します。
  • escapeTokenInputs (必須)
    • トークンを検証するためにMAC値を算出する際、検証対象コンテンツのパス文字列を、URLエンコードしてMAC値を算出するかどうかです。
    • true – URLエンコードする
    • false – URLエンコードしない
  • ignoreQueryString (必須)
    • MAC値を算出するためのコンテンツパスにクエリパラメーターが付加されている場合、そのクエリパラメーターを無視するかどうかです。
    • true – クエリパラメーターを無視する
    • false – クエリパラメーターを無視しない
  • key (必須)
    • MAC値を算出するために使用する共通鍵です。16進文字列で、字数は64以内の偶数としてください。
  • transitionKey (オプション)
    • MAC値を算出するために使用する共通鍵です。16進文字列で、字数は64以内の偶数としてください。transitionKeyは、keyから共通鍵を変更する場合に使用します。エッジサーバは、keyまたはtransitionKeyによる何れかのトークン検証が成功すれば、アクセスを認可します。
       {
        "rules": [
         {
          "matches": [
           {
            "name": "url-wildcard",
            "value": "/protected/*"
           }
          ],
          "behaviors": [
           {
            "name": "token-auth",
            "params": {
             "tokenName": "__mytoken__",
             "tokenDelimiter": "~",
             "aclDelimiter": "!",
             "hmacAlgorithm": "SHA256",
             "escapeTokenInputs": false,
             "ignoreQueryString": true,
             "key": "6e65775365637265744b6579",
             "transitionKey": "6f6c645365637265744b6579"
            }
           }
          ]
         }
        ]
       }