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

ApsaraVideo VOD:タイプA署名

最終更新日:Oct 23, 2024

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

仕組み

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

http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash

署名付きURLのフィールド

フィールド

説明

ドメイン名

ApsaraVideo VODのドメイン名。

ファイル名

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

auth_key

指定した暗号化キー。

timestamp

署名付きURLが生成される時刻。 タイムスタンプとデフォルトの有効期間は、署名付きURLの有効期限を指定します。 時刻はUTC + 8で、YYYYMMDDHHMM形式に従います。

説明

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

ランド

乱数。 ほとんどの場合、このフィールドの値は0に設定されます。 毎回異なるURLを生成する場合は、UUIDを使用することを推奨します。 ハイフン (-) は使用できません。 例: 477b3bbc253f467b8def6711128c **** 。

uid

ユーザーID。 このフィールドを0に設定します。

md5hash

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

md5hashは、次の文字列に基づいて計算されます。

sstring = "URI-timestamp-rand-uid-PrivateKey"
md5hash = md5sum(sstring)
  • URI: パラメーターを除く、要求されたファイルの相対パス。 例: /Filename。

  • PrivateKey: ApsaraVideo VODコンソールで設定したプライマリキーまたはセカンダリキー。 詳細については、「Enable and configure URL signing」をご参照ください。

  • md5sum: MD5ハッシュ値の計算に使用される関数。 開発言語によって提供されるMD5ハッシュ計算関数を使用します。

署名ロジック

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

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

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

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

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

      説明

      リクエストが認証に合格すると、認証固有のパラメーターがURLから削除され、キャッシュヒット率が上がり、オリジントラフィックが減少します。

      • back-to-originリクエストのURLの形式は、http:// DomainName/FileNameです。

      • キャッシュキーの生成に使用されるURLの形式は、http:// DomainName/FileNameです。

署名付きURL連結のサンプル

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

サンプル条件

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

    http://example.aliyundoc.com/video/standard/test.mp4
    説明

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

  • PrivateKeyをaliyunvodexp1234に設定します。

  • 署名付きURLが生成されたときのタイムスタンプ2021-08-01 00:00:00 (UTC + 8) を10進整数1627747200に変換します。

連結手順

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

    /video/standard/test.mp4-1627747200-0-0-aliyunvodexp1234
  2. 署名文字列に基づいてmd5hash値を計算します。

    HashValue = md5sum("/video/standard/test.mp4-1627747200-0-0-aliyunvodexp1234") = 0e9048c8c7de46b6015618f42de7****
  3. 署名付きURLを生成します。

    http://example.aliyundoc.com/video/standard/test.mp4?auth_key=1627747200-0-0-0e9048c8c7de46b6015618f42de7****

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