ApsaraVideo Live は、アップストリーミング、録画、スナップショット、およびデュアルストリームディザスタリカバリ の イベント に対してコールバック認証をサポートしています。この機能を有効にすると、ApsaraVideo Live はコールバックリクエストを開始する際に HTTP(S) リクエストヘッダーに認証パラメーターを含めます。これにより、コールバック受信サーバーは署名およびタイムスタンプの検証を行い、不正または無効なリクエストを防止できます。
認証パラメーター
以下の認証パラメーターが HTTP(S) リクエストヘッダーに追加されます。
パラメーター | 説明 |
ALI-LIVE-TIMESTAMP | コールバックリクエストが開始された時刻。秒単位の UNIX タイムスタンプで表されます。 |
ALI-LIVE-SIGNATURE | 署名文字列。32 文字の MD5 値です。計算方法については、次のセクションをご参照ください。 |
署名アルゴリズム
ALI-LIVE-SIGNATURE 値は、以下のフィールドから計算されます。
フィールド | 例 | 説明 |
Domain |
| コールバックタイプによってドメインソースが異なります。
|
ALI-LIVE-TIMESTAMP |
| コールバックリクエストが開始された時刻。秒単位の UNIX タイムスタンプで表されます。 |
NotifyAuthKey |
| 設定済みの認証キーです。 |
連結
上記 3 つのフィールドを縦棒 (|) を区切り文字として連結し、その MD5 値を計算します。
MD5Content = Domain|ALI-LIVE-TIMESTAMP|NotifyAuthKey
ALI-LIVE-SIGNATURE = md5sum(MD5Content)計算例
ALI-LIVE-SIGNATURE = md5sum(learn.aliyundoc.com|1519375990|yourkey)受信サーバーでの検証
コールバック受信サーバーは以下の処理を行います。
署名検証
本トピック冒頭の「コールバックタイプとドメイン」の表に基づき、コールバックドメインを特定します。
コールバックドメイン、ALI-LIVE-TIMESTAMP 値、および NotifyAuthKey を縦棒 (
|) を区切り文字として連結します。連結された文字列の MD5 値を計算します。
計算結果と
ALI-LIVE-SIGNATUREヘッダーの値を比較します。一致しない場合は、リクエストを拒否します。
タイムスタンプ検証
現在時刻を取得し、ALI-LIVE-TIMESTAMP 値との差分を計算します。差分がサーバーで設定したしきい値を超える場合は、リクエストを拒否します。
時間許容範囲は 5 分を推奨します。サーバー間のクロックスキューにより時刻のずれが生じる可能性があります。許容範囲を短く設定しすぎると、ネットワーク遅延により正当なコールバックが拒否される可能性があります。このチェックを有効にするかどうかは任意で選択できます。
注意事項
コールバック認証はオプションですが、推奨されます。NotifyAuthKey を設定すると、コールバックリクエストに署名ヘッダーが含まれるようになります。これらの署名を受信サーバーで検証するかどうかは、お客様の判断に委ねられます。NotifyAuthKey の設定は、既存のコールバック機能に影響しません。NotifyAuthKey を設定しない場合も、コールバックは影響を受けません。
NotifyAuthKey は、ストリームの再アップストリーミング後に有効になります。進行中のアップストリーミングに対するコールバックでは、引き続き元の NotifyAuthKey が使用されます。