URL 認証機能は、違法または悪意のある活動からユーザーのウェブサイトのコンテンツを保護することを目的としています。 アンチリーチを使用してリファラーのホワイトリストとブラックリストを追加すると、ホットリンクの問題を解決できます。 ただし、参照元コンテンツが改ざんされる可能性があるため、参照元アンチリーチはサイトリソースを保護できません。 そのため、ユーザーのソースサイトのリソースを保護するために URL 認証を使用することがより安全で効果的です。

安全で信頼できる盗難防止メカニズムは、Alibaba Cloud CDN アクセラレーションノードと顧客リソースサイトを調整することで、サイトのリソースを保護します。 顧客サイトは、(認証情報を含む) 暗号化された URL を提供し、ユーザーはそれを使用してアクセラレーションノードにリクエストします。 アクセラレーションノードは暗号化された URL の認証情報を確認し、リクエストの妥当性を判断 (つまり、有効なリクエストに正常応答を返すか、無効なリクエストに異常応答を返して拒否するか) し、効果的に顧客サイトのリソースを保護します。

認証 URL の構成

認証 URL は、ライブストリーミングアドレス/ストリーム再生アドレスおよび検証文字列で構成されています。 検証文字列は、認証キーおよび有効期限を使用して、 md5 アルゴリズムに従って計算されます。 このアドレスは、PC 端末、モバイル端末およびサードパーティのストリーミング再生ツールに適用可能です。

  • 認証キー: このフィールドはランダムに割り当てられ、カスタム設定もサポートしています。

  • 有効期間: ユーザーが顧客ソースサーバーをアクセスする時刻が自己定義された時刻 (timestamp フィールドで指定) を超える場合、認証は無効です。 例えば、有効期間が 1800 秒間であり、ユーザーが 2020-08-15 15:00:00 にアクセス時刻を設定した場合、リンクは 2020-08-15 15:30:00 で期限切れになります。

URL 認証の概念

暗号化された URL コンポーネント
http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash
				
認証フィールドの説明
フィールド 説明
timestamp 有効期間、正の整数、10 桁固定、1970-01-01 から計測した秒数。 有効期限のコントロールに使用します。10 桁の整数で、有効時間は 1800 秒間です。
rand 乱数です。(ダッシュ "-" を含めることはできませんが) UUID の仕様を推奨します。 たとえば、フォーマットは "477b3bbc253f467b8def6711128c7bec)" です。
uid 未使用です (0 に設定されています)。
md5hash md5 アルゴリズムに従って計算される検証文字列です。英小文字および数字がサポートされ、固定長 32 文字です。

サーバーがリクエストを受信すると、 まずリクエストの "timestamp" が現在の時刻よりも前かどうかを判別します。 現在時刻より前の場合は、有効期限は無効であると考えられるので、HTTP 403 エラーを返します。 timestampが現在の時刻より後の場合、同じ文字列(下記sstring組成モードを参照)に構成されます。 その後、サーバーは MD5 アルゴリズムに従ってHashValue を計算し、この値をリクエスト内のmd5hash と比較します 。 値が同じである場合には、認証は成功です。それ以外の場合は、HTTP 403 エラーを返します。

HashValue は次の文字列で計算されます。
sstring = "URI-Timestamp-rand-uid-PrivateKey"(URI はユーザーのリクエストしたオブジェクトのアドレスに対応しますが、"/Filename" のようなパラメーターは含めません。)HashValue = md5sum(sstring)
HashValue = md5sum(sstring)
				
  1. req_auth を使用します。 http://cdn.example.com/video/standard/1K.html
  2. キー設定: "aliyuncdnexp1234" (ユーザが設定します。)
  3. 認証の有効期限は 2015-10-10 00:00:00 で、算出される秒数は 1444435200 です。
  4. サーバーは、HashValue の計算に用いるシグネチャ文字列を作成します。 /video/standard/1K.html-1444435200-0-0-aliyuncdnexp1234
  5. サーバは、シグネチャ文字列を元に HashValue を算出します。 HashValue = md5sum("/video/standard/1K.html-1444435200-0-0-aliyuncdnexp1234") = 80cd3862d699b7118eed99103f2a3a4f
  6. リクエストを行うときの URL は http://cdn.example.com/video/standard/1K.html?auth_key=1444435200-0-0-80cd3862d699b7118eed99103f2a3a4f です。

    算出された HashValue は、ユーザーのリクエスト内の "md5hash = 80cd3862d699b7118eed99103f2a3a4f" と一致し、認証に成功しました。

URL 認証コードの例

詳細については、「認証コードの例」をご覧ください。

手順

認証機能はデフォルトで有効になっています。 偽造の危険性を減らすために、デフォルトで有効にしておくことを推奨します。 認証機能を無効にしたい場合は、ビジネスマネージャーに連絡するか、チケットを起票し、サポートセンターへお問い合わせください。

認証機能が有効になっている場合は、必要に応じてデフォルト認証またはカスタム認証を選択できます。

デフォルト認証

デフォルトの許可では、許可キーはランダムに割り当てられ、有効期間は 30 分です。 時間が 1800 秒を超えた場合に認証が期限切れになります。
  1. ApsaraVideo Live コンソールにログインします。
  2. [ストリーム管理] > [URL ジェネレーター] > [エッジインジェスト]
    エッジインジェスト機能は、ビデオストリームを優先的に最適な CDN ノードにプッシュして、ビデオの遅れや遅いストリームプル率などの問題を最小限に抑えます。 エッジインジェスト を優先的に選択することを推奨します。
  3. [ストリーミングドメイン] をクリックして、関連づけらえているインジェストドメインを認証するために、対応するアプリケーション名およびストリーム名を入力し、 [URL 生成] をクリックします。
    必要に応じて、インジェストドメインとストリーミングドメインの認証を設定できます。 違法複製の危険性を減らすため、両方のドメインで認証を実行することを推奨します。
    認証済みのインジェスト URL とストリーミング URL を取得できます。

カスタム認証

デフォルト設定を採用しない場合は、 プライマリキーセカンダリキー有効期間アプリケーション名およびストリーム名&をカスタマイズして、ストリームインジェスト用の署名付き URL を生成することができます。

  1. ApsaraVideo Live コンソールにログインします。
  2. [ドメイン] をクリックし、カスタマイズ認証を実行するドメインを選択して、 [ドメイン設定] をクリックします。
  3. [アクセス制御] クリックし、 URL 認証を選択して [設定を変更] をクリックします。
    ストリーム管理 > URL ジェネレーター > エッジインジェストにアクセスして、 [アクセス制御] をクリックします。ストリーミングドメインおよびそれに関連付けられたインジェストドメインに従うと、すぐにカスタム認証ページにアクセスできます。
  4. URL 認証ページで、プライマリキーセカンダリキーおよび有効期間をカスタマイズし、 [OK] をクリックします。
    プライマリキーは暗号化された文字列を計算するための鍵です。 プライマリキーが変更された場合、プライマリキーをしている URL は即座に無効になります。 セカンダリキーは、 プライマリキーを変更するプロセスを橋渡しします。つまり、プライマリキーを変更した場合、プライマリキーを利用するインジェスト URL またはストリーミング URL は即座に無効にならず、セカンダリキーが移行の役割を果たします。
  5. ストリーム管理 > URL ジェネレーター > エッジ取り込みで、ストリーミングドメインを選択して、関連づけられた取り込みドメインを認証します。対応するアプリケーション名およびストリーム名を入力して、 [URL 生成] をクリックします。

    署名済みの取り込み URL とストリーミング URL を取得できます。