すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo VOD:タイプC署名

最終更新日:Oct 28, 2024

ApsaraVideo VODでは、URL署名機能を使用して、オリジンコンテンツを不正なダウンロードやアクセスから保護できます。 URL署名機能は、3つの署名タイプをサポートします。 このトピックでは、タイプCの署名方法について説明します。

仕組み

タイプCに基づくURLの署名方法

  • 書式 1

    http://DomainName/{<md5hash>/<timestamp>}/FileName
  • 書式 2

    http://DomainName/FileName?{KEY1=<md5hash>&KEY2=<timestamp>}
説明

中かっこ ({}) で囲まれたコンテンツは、標準URLに追加された暗号化情報を示します。

署名付きURLのフィールド

項目

説明

DomainName

ApsaraVideo VODのドメイン名。

PrivateKey

ApsaraVideo VODコンソールで設定されているプライマリキーまたはセカンダリキー。 詳細については、「URL署名の有効化と設定」をご参照ください。

ファイル名

オリジンサーバー上の要求されたリソースを指す実際のURL。 Filenameフィールドの値は、スラッシュ (/) で始まる必要があります。

timestamp

署名付きURLが生成される時刻。 タイムスタンプとデフォルトの有効期間は、署名付きURLの有効期限を決定します。 タイムスタンプはUNIXの時刻形式に従います。 1970年1月1日木曜日00:00:00から経過した秒数です。 タイムスタンプは、10個の正の10進整数で構成される文字列であり、タイムゾーンとは無関係です。 10進文字列は16進文字列に変換されます。

説明

ほとんどの場合、署名付きURLは、ApsaraVideo VODで指定したデフォルトの有効期間が経過すると期限切れになります。 署名サーバーで署名付きURLの有効期間を指定すると、署名付きURLのタイムスタンプと有効期間は、次の式に基づいて計算されます。timestamp=UNIX Timestamp on the signing server + Configured validity period on the signing server. 有効期間=タイムスタンプ + デフォルトの有効期間

md5hash

MD5アルゴリズムを使用して計算される文字列。 文字列の長さは32文字で、数字と小文字を使用できます。

md5hash値は、次の方法を使用して計算されます。

sstring = "Privatekey+URI+timestamp" (The URI specifies the address that points to the requested resource. The URI does not contain parameters such as /Filename.)
md5hash = md5sum(sstring)

署名ロジック

Alibaba Cloud CDNポイントオブプレゼンス (POP) がリクエストを受信すると、POPは、timestampデフォルトの有効期間の値を加算して計算された時刻が現在の時刻より前であるかどうかを確認します。

  • timestampデフォルトの有効期間の値を加算して計算された時刻が現在の時刻より前の場合、POPはURLの有効期限が切れたと判断し、HTTP 403のステータスコードを返します。

  • timestampデフォルトの有効期間を追加して計算された時刻が現在の時刻より後の場合、POPは前の表に記載されているsstringに基づいて文字列を生成します。 次に、POPはMD5アルゴリズムを使用してmd5hash値の値を計算し、計算されたmd5hash値をリクエスト内のmd5hash値と比較します。

    • 値が同じ場合、リクエストは認証を通過します。 POPは、要求されたリソースを返します。

      説明

      リクエストが認証に合格すると、URL署名パラメーターがURLから削除され、キャッシュヒット率が向上し、back-to-originトラフィックが減少します。

      • 形式1または形式2で署名されたURLの場合、キャッシュキーの生成に使用されるURLの形式はhttp:// DomainName/FileNameです。

      • 形式1または形式2で署名されたURLの場合、オリジンリクエストのURLの形式はhttp:// DomainName/FileNameです。

    • 2つの値が異なる場合、リクエストは認証に失敗します。 POPはHTTP 403ステータスコードを返します。

次の例は、タイプC署名を実装する方法を示しています。

サンプル条件

  • オリジンサーバーからオブジェクトを取得する:

    http://domain.example.com/test.flv
    説明

    要求されたオブジェクトのURLに漢字が含まれている場合は、署名付きURLを連結する前にURLをエンコードする必要があります。

    • 元のURL: https://example.com/image/阿里. jpg

    • エンコードされたURL: https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg

  • PrivateKeyをaliyuncdnexp1234に設定します。

  • タイムスタンプを55CE810 0に設定します。

連結手順

  1. md5hash値の計算に使用される署名文字列を生成します。

    aliyuncdnexp1234/test.flv55CE8100
  2. 署名文字列に基づいてmd5hash値を計算します。

    md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bd
  3. 署名付きURLを生成します。

    • 形式 1:

      http://domain.example.com/a37fa50a5fb8f71214b1e7c95ec7a1bd/55CE8100/test.flv
    • 形式 2:

      http://domain.example.com/test.flv?KEY1=a37fa50a5fb8f71214b1e7c95ec7a1bd&KEY2=55CE8100

クライアントが署名付きURLを使用してリソースを要求する場合、POPは計算されたmd5hash値を要求内のmd5hash値と比較します。 a37fa50a5fb8f71214b1e7c95ec7a1bdのように同じで、署名付きURLが有効期間内の場合、リクエストは認証を通過します。 それ以外の場合、認証は失敗します。