サイトリソースの悪意のあるダウンロードや盗難を防ぐために、リファラーブラックリストまたはホワイトリストを設定して訪問者を特定し、フィルタリングすることができます。 URL署名を使用して、オリジンサーバー上のリソースをより適切に保護することもできます。 このトピックでは、URL署名機能、機能の仕組み、機能の構成方法、および使用法に関する注意事項について説明します。
URL署名の使用
ApsaraVideo Liveコンソールでは、デフォルトのURL署名設定を使用するか、カスタムURL署名設定を構成できます。
デフォルトの認証: デフォルトの認証タイプはタイプAです。詳細については、「ライブURLジェネレーター」をご参照ください。
カスタム認証: デフォルトの認証を使用しない場合は、URL署名設定を構成できます。 詳細については、「URL署名の設定」をご参照ください。
重要ApsaraVideo Liveコンソールでプライマリキーとセカンダリキーを設定できます。 一次キーと二次キーは等しく有効です。 セカンダリキーは、スムーズな切り替えを保証するために使用されます。
主キーを変更すると、元の主キーを使用するすべての生成されたストリーミングURLがすぐに無効になります。 プライマリキーからセカンダリキーに切り替えた場合、元のプライマリキーを使用する生成されたストリーミングURLは一定期間有効です。 これにより、スムーズな切り替えが保証されます。
コードを使用して、署名付きURLを作成できます。
取り込みURLのAppNameフィールドとStreamNameフィールドに基づいて、署名なしのストリーミングURLを作成します。 例:
rtmp:/DomainName/AppName/StreamName
次に、コードで認証アルゴリズムを使用して署名付きストリーミングURLを生成します。 認証アルゴリズムの詳細については、「署名付きURLの作成」をご参照ください。 署名付きURLの生成に使用されるサンプルコードの詳細については、「URL署名の例」をご参照ください。
署名付きURLを作成する
署名付きURLは、サードパーティのストリーム取り込みツールとPCおよびモバイルデバイス上のプレーヤーでサポートされています。 署名付きURLは、インジェストURLまたはストリーミングURLとアクセストークン
で構成されます。 例:
rtmp://DomainName/AppName/StreamName?auth_key=timestamp-rand-uid-md5hash
署名付きURL | 説明 |
| 取り込みURLまたはストリーミングURL。 詳細については、「取り込みURLとストリーミングURLの生成」をご参照ください。 |
| アクセストークン。タイムスタンプ、rand、uid、およびmd5hashフィールドが含まれます。 |
timestamp | 署名付きURLの有効期限。署名付きURLが生成された時刻と指定された有効期間によって決まります。 この値は UNIX タイムスタンプです。 単位は秒です。
|
rand | 乱数。通常は0に設定されます。 毎回異なるURLを生成する場合は、乱数としてUUIDを使用することをお勧めします。 ハイフン (-) は使用できません。 例: |
uid | 使用されない追加のパラメータ。 典型的には0に設定されます。 |
md5hash | MD5アルゴリズムを使用して計算される文字列。 文字列の長さは32文字で、数字と小文字が含まれます。
説明 ApsaraVideo Liveコンソールを使用して署名付きURLを生成したり、コードを使用して署名付きURLを作成したりしても、 |
URL署名のしくみ
URL署名を有効にすると、サーバーは次の操作を実行してリクエストを検証します。
サーバーは、リクエストのタイムスタンプが現在の時刻より前かどうかを確認します。
タイムスタンプが現在の時刻より前の場合、サーバーは署名付きURLの有効期限が切れたとみなし、HTTPステータスコード403を返します。
タイムスタンプが現在の時刻より後の場合、サーバーは次のsstring式を使用して文字列を作成します。
サーバーはMD5アルゴリズムを使用して文字列のハッシュ値を計算し、そのハッシュ値をリクエストに含まれるハッシュ値と比較します。
2つの値が同じであれば、認証は成功である。 サーバーはライブストリームを返します。
2つの値が異なる場合、認証は失敗します。 サーバーはHTTPステータスコード403を返します。
ハッシュ値は、次の式に基づいて計算されます。
sstring = "URI-timestamp-rand-uid-PrivateKey"
HashValue = md5sum(sstring)
例:
仮定:
req_authを使用して
rtmp://demo.aliyundoc.com/video/standard****
オブジェクトをリクエストします。暗号化キーをaliyunliveexp1234に設定します。これは、ApsaraVideo Liveコンソールで設定されたプライマリキーまたはセカンダリキーです。
署名付きURLが生成される時刻は、2021年5月28日16:49:57 (UTC + 8) です。
ApsaraVideo Liveコンソールでは、署名付きURLの有効期間は40分に設定されています。
randフィールドとuidフィールドの両方を0に設定します。
結果:
署名付きURLの計算されたUNIXタイムスタンプは1622194197で、これは2021年5月28日の17:02:57 (UTC + 8) です。
サーバは、ハッシュ値を計算するために使用される署名文字列を構築する。
/ビデオ /standard-1622194197-0-0-aliyunliveexp1234
サーバは、署名文字列に基づいてハッシュ値を計算する。
HashValue = md5sum("/video/standard-1622194197-0-0-aliyunliveexp1234") = 5552ff52b5e4e20387c6dc18afce ****
リクエストのURLは
rtmp://demo.aliyundoc.com/video/standard****?auth_key=1622194197-0-0-5552ff52b5e4e20387c6dc18afce****
です。説明auth_keyフィールドは、署名付きURLに含まれるアクセストークンを示す。
計算されたハッシュ値は
md5hash = 5552ff52b5e4e20387c6dc18afce ****
で、リクエストに含まれるものと同じです。 この場合、認証は成功である。
使用上の注意
デフォルトでは、URL署名が有効になっています。 コンテンツが海賊版にならないように、この機能を有効にしておくことをお勧めします。 URL署名を無効にする場合は、リソースの不正使用のリスクを理解し、ApsaraVideo LiveコンソールのURL 認証ページでURL署名を無効にするための免責事項に同意してください。
auth_keyフィールドを手動で設定する必要があります。 ApsaraVideo Liveには、auth_keyフィールドの値を計算するためのAPI操作はありません。
URL署名を有効にした後、取り込みURLとストリーミングURLにauth_keyフィールドを追加する必要があります。 そうしないと、ライブストリームを再生できません。 取り込みURLまたはストリーミングURLのみに署名することはできません。 両方に署名する必要があります。
署名されたURLは、有効期限のタイムスタンプまで有効です。 署名付きURLは、有効期限が切れる前にいつでもアクセスできます。 ApsaraVideo Liveは、1回限りの署名付きURLをサポートしていません。
auth_keyフィールドの値は、queryStringフィールドを含まないURIのMD5値です。 詳細については、URL署名パラメーターの設定に関する前のセクションを参照してください。 取り込みURLとストリーミングURLの両方のURIは、AppName/StreamNameです。 取り込みURLが機密でない場合は、有効期限タイムスタンプをできるだけ近くに設定することを推奨します。 これにより、ストリーミングURLへの悪意のあるアクセスを防ぎます。
Real-Time Messaging Protocol (RTMP) 、FLV、およびReal-Time streaming (RTS) 形式の取り込みおよびストリーミングURLの場合、ストリームの取り込みまたはストリーミングの開始時にのみリクエストが認証されます。 プロセス中に署名付きURLが期限切れになっても、進行中のストリーム取り込みまたはストリーミングは中断されません。
M3U8形式のストリーミングURLの場合、リクエストはストリーミングの開始時とストリーミング中に認証されます。 プロセス中に署名付きURLが期限切れになると、進行中のストリーミングが中断されます。