URL 署名は、ご利用のサイト上のリソースが他のサイトによる不正なダウンロードや使用から保護されます。このトピックでは、Alibaba Cloud CDN における type A signing の仕組みを説明し、その例を示します。
仕組み
Type A 署名付き URL の構造
http://DomainName/Filename?auth_key={<timestamp>-rand-uid-<md5hash>}説明{}内の内容は、標準 URL に追加される暗号化された情報です。フィールドの説明
フィールド
説明
DomainName
ご利用の CDN サイトのドメイン名です。
Filename
実際の back-to-origin リクエストの URL です。Filename はスラッシュ (
/) で始まる必要があります。auth_key
リクエストの認証情報です。timestamp、rand、uid、md5hash で構成されます。
timestamp
署名サーバーが署名付き URL を生成した時刻です。この値と 署名付き URL の有効期間 によって、署名付き URL の有効期限が制御されます。この時刻は 10 桁の UNIX タイムスタンプ(1970 年 1 月 1 日 00:00:00 からの経過秒数)です。
説明URL 署名の設定 コンソールで TTL を設定します。設定が完了すると、署名付き URL の有効期限は
timestamp+ CDN に設定された有効期間となります。rand
乱数です。ハイフン (-) を含まないユニバーサル一意識別子 (UUID) を使用してください。例:477b3bbc253f467b8def6711128c7bec
uid
ユーザー ID です。このフィールドは使用されません。0 を設定してください。
md5hash
MD5 アルゴリズムを使用して計算された 32 文字の文字列です。数字と小文字で構成されます。
計算方法:
sstring = "URI-Timestamp-rand-uid-PrivateKey" (URI はリクエスト対象オブジェクトの相対パス(例:/Filename)であり、パラメーターは含みません。) md5hash = md5sum(sstring)認証ロジック
CDN サーバーがリソースへのアクセスリクエストを受信すると、
timestamp+署名付き URL の有効期間が現在時刻より前かどうかをチェックします。timestamp+署名付き URL の有効期間が現在時刻より前の場合、サーバーは URL が期限切れであると判断し、HTTP 403 エラーを返します。timestamp+署名付き URL の有効期間が現在時刻より後の場合、サーバーはsstringフォーマット(表内のsstringフォーマットを参照)で文字列を構築します。その後、MD5 アルゴリズムを使用してmd5hash値を計算し、計算されたmd5hash値とユーザーのリクエストに含まれるmd5hash値を比較します。値が一致する場合、認証は成功し、リソースが返されます。
説明認証が成功すると、署名パラメーターは URL から削除され、元の URL に復元されます。これにより、キャッシュヒット率が向上し、back-to-origin トラフィックが削減されます。例:
署名パラメーター付き URL:
http://DomainName/Filename?auth_key={<timestamp>-rand-uid-<md5hash>}認証成功後:
キャッシュキー生成に使用される URL フォーマット:
http://DomainName/FileName実際の back-to-origin リクエストに使用される URL フォーマット:
http://DomainName/FileName
値が一致しない場合、認証は失敗し、HTTP 403 エラーが返されます。
署名付き URL の例
以下の例では、type A signing の実装方法を示します。
例の条件
オリジンリクエストオブジェクト:
http://domain.example.com/video/standard/test.mp4説明リクエスト URL に中国語文字やその他の非 ASCII 文字が含まれる場合は、まず URL を エンコード する必要があります。その後、エンコードされた URL を使用してハッシュ化用の文字列を構築します。例:
元の URL:
https://example.com/image/AlibabaCloud.jpgエンコードされた URL:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
キーは次のように設定されています:aliyuncdnexp1234
署名サーバーが署名付き URL を生成した時刻は、2015 年 10 月 10 日 08:00:00 (UTC + 08:00) で、10 進数整数値は 1444435200 です。
連結プロセス
CDN サーバーは、
md5hashの計算に使用する文字列を構築します。/video/standard/test.mp4-1444435200-0-0-aliyuncdnexp1234この文字列に基づき、CDN サーバーは
md5hashを計算します。md5hash = md5sum("/video/standard/test.mp4-1444435200-0-0-aliyuncdnexp1234") = 23bf85053008f5c0e791667a313e28ce署名付き URL を生成します。
http://domain.example.com/video/standard/test.mp4?auth_key=1444435200-0-0-23bf85053008f5c0e791667a313e28ce
クライアントが署名付き URL を使用してリクエストを行う際、CDN サーバーが計算した md5hash 値がリクエストに含まれる md5hash 値(23bf85053008f5c0e791667a313e28ce)と一致し、かつ署名付き URL が有効期限内である場合、認証は成功します。それ以外の場合は、認証は失敗します。