ApsaraVideo VODでは、URL署名機能を使用して、オリジンコンテンツを不正なダウンロードやアクセスから保護できます。 URL署名機能は、3つの署名タイプをサポートします。 このトピックでは、タイプBの署名方法について説明します。
仕組み
URLがタイプBに基づいて暗号化される方法
http://DomainName/timestamp/md5hash/FileName
署名付きURLのフィールド
フィールド | 説明 |
ドメイン名 | ApsaraVideo VODのドメイン名。 |
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. 有効期間=タイムスタンプ + デフォルトの有効期間。 |
md5hash | MD5アルゴリズムを使用して計算される文字列。 文字列の長さは32文字で、数字と小文字を使用できます。 |
ファイル名 | オリジンサーバー上の要求されたリソースを指す実際のURL。 Filenameフィールドの値は、スラッシュ ( |
署名ロジック
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
です。
例
次の例は、タイプB署名を実装する方法を示しています。
サンプル条件
オリジンサーバーからオブジェクトを取得する:
http://example.aliyundoc.com/video/standard/test.mp4
説明オリジンサーバーから取得したオブジェクトのURLに漢字が含まれている場合は、署名付きURLを連結する前にURLをエンコードする必要があります。
PrivateKeyをaliyunvodexp1234に設定します。
署名付きURLが生成されたときのタイムスタンプ2021-08-01 00:00:00 (UTC + 8) を10進整数1627747200に変換します。
連結手順
md5hash
の値を計算するために使用される署名文字列を生成します。aliyunvodexp12341627747200/video/standard/test.mp4
署名文字列を使用して、
md5hash
の値を計算します。md5hash = md5sum("aliyunvodexp12341627747200/video/standard/test.mp4") = 9044548ef1527deadafa49a890a3****
署名付きURLを生成します。
http://example.aliyundoc.com/1627747200/9044548ef1527deadafa49a890a3****/video/standard/test.mp4
クライアントが署名付きURLを使用してリソースを要求する場合、POPは計算されたmd5hash
値を要求内のmd5hash
値と比較します。 9044548ef1527deadafa49a890a3 **** のように2つの値が同じ場合、リクエストは認証を通過します。 それ以外の場合、認証は失敗します。