このガイドでは、署名の作成方法と、署名の必須フィールドとオプションフィールドについて説明します。
署名を作成するには、署名する文字列を作成します。このガイドでは、これを署名付き値と呼びます。署名付きの値には、保護するコンテンツ、署名付きの値の有効期限などを記述するパラメータが含まれます。
署名文字列の作成時に、署名付きの値を使用します。署名文字列は、署名のパラメータ(署名付き値の非対称鍵 Ed25519 署名など)を構成して作成します。
Media CDN は、最終的に構成された署名を使用してコンテンツの保護に役立てます。
サポートされている署名形式
Media CDN は、次の署名付きリクエスト形式をサポートしています。
形式 | 動作 | 例 |
---|---|---|
クエリ パラメータ(完全一致 URL) |
特定の URL へのアクセス権を付与するための完全一致 URL。 |
Exact:
|
クエリ パラメータ(URL プレフィックス) |
URLPrefix を指定すると、接頭辞に署名して、プレーヤーまたはマニフェスト生成内の複数の URL に同じクエリ パラメータを追加できます。
|
署名する内容:
|
経路コンポーネント |
接頭辞: これにより、サブ リソースの取得時に、相対マニフェスト URL が署名付き URL コンポーネントを自動的に継承できるようになります。 |
https://media.example.com/video/edge-cache-token=Expires=EXPIRATION
|
署名付き Cookie | 接頭辞: Cookie は、署名付き URLPrefix 値で指定された接頭辞を持つ任意の URL へのアクセスを許可します。
|
Edge-Cache-Cookie:
|
署名の作成
必須署名フィールドと必要なオプション署名フィールドを含む文字列を連結して、署名付き値を作成します。
指定する場合、
URLPrefix
を最初に配置し、Expires
、KeyName
、任意のパラメータをその後に配置する必要があります。各フィールドとパラメータは次の記号で区切ります。
- Cookie の場合は、コロン(
:
)文字を使用します。 - クエリ パラメータとパス コンポーネントには、アンパサンド(
&
)文字を使用します。
- Cookie の場合は、コロン(
署名付きの値を Ed25519 署名で署名します。
フィールド区切り文字(
:
または&
)の後にSignature=
と Ed25519 署名を文字列の末尾に追加します。
署名付き URL を作成する
次のコードサンプルは、署名付き URL をプログラムで作成する方法を示しています。
Go
Media CDN に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
Media CDN に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
署名付き URL 接頭辞を作成する
次のコードサンプルは、署名付き URL 接頭辞をプログラムで作成する方法を示しています。
Go
Media CDN に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
Media CDN に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
署名付き URL Cookie を作成する
次のコードサンプルは、署名付き URL Cookie をプログラムで作成する方法を示しています。
Go
Media CDN に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
Media CDN に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
署名付きパス コンポーネントを作成する
次のコードサンプルは、署名付きパス コンポーネントをプログラムで作成する方法を示しています。
Python
Media CDN に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
必須の署名フィールド
すべての署名には次のフィールドが必要です。
Expires
KeyName
Signature
クエリ パラメータが存在する場合は、URL の最後のパラメータとしてグループ化する必要があります。特に指定がない限り、パラメータ名とその値では大文字と小文字が区別されます。
次の表に、各パラメータの説明を示します。
フィールド名 | シグネチャ パラメータ | 署名付きの値 |
---|---|---|
Expires |
Unix エポックからの整数の経過秒数(1970-01-01T00:00:00Z) | Expires=EXPIRATION_TIME 。この日時を過ぎると、署名は無効になります。 |
KeyName |
このリクエストの署名に使用された EdgeCacheKeyset の名前。KeyName は、キーセット自体の個々のキーではなく、キーセット全体を指します。
|
KeyName=EDGE_CACHE_KEYSET |
Signature |
署名の base64 エンコード バージョン。 | 該当なし |
省略可能な署名フィールド
クエリ パラメータが存在する場合は、URL の最後のパラメータとしてグループ化する必要があります。特に指定がない限り、パラメータ名とその値では大文字と小文字が区別されます。
次の表に、省略可能なシグネチャ パラメータの各パラメータの名前と詳細を示します。
フィールド名 | シグネチャ パラメータ | 署名付きの値 |
---|---|---|
HeaderName |
リクエストに存在する必要がある名前付きリクエスト ヘッダー フィールド名。 ヘッダー フィールド名では大文字と小文字が区別されるため、署名する際は小文字にする必要があります。Media CDN は、署名を検証する前にヘッダーを小文字にします。 |
HeaderName=HEADER_NAME |
HeaderValue |
リクエストに存在する必要がある名前付きリクエスト ヘッダー フィールド値。通常は、ユーザー ID などの不透明な識別子です。HeaderValue が指定され、HeaderName が指定されていないリクエストは拒否されます。
|
HeaderValue=HEADER_VALUE |
IPRanges |
この URL が有効な最大 5 つの IPv4 アドレスと IPv6 アドレスのリスト(CIDR 形式、ウェブセーフ Base64 形式)。たとえば、IP 範囲「192.6.13.13/32,193.5.64.135/32」を指定するには、 クライアントが WAN 移行の危険にさらされている場合や、アプリケーション フロントエンドへのネットワーク パスが配信パスと異なる場合は、IPRanges を署名に含めることは役に立ちません。
署名付きリクエストに含まれていない IP アドレスに接続すると、Media CDN は 以下のような場合、Media CDN は
これらの要因はすべて、動画再生セッション中に特定のクライアントが非決定論的な IP アドレスを持つ原因となる可能性があります。アクセスの発行後にクライアント IP アドレスが変更され、クライアントが動画セグメントを再生バッファにダウンロードしようとすると、Media CDN から |
IPRanges=BASE_64_IP_RANGES |
URLPrefix |
アクセス権を付与する base64(URL セーフ)URL 接頭辞。URLPrefix を指定すると、接頭辞に署名して、プレーヤーまたはマニフェスト生成内の複数の URL に同じクエリ パラメータを追加できます。
署名付き Cookie 形式を使用する場合、URLPrefix が必要です。
|
URLPrefix=BASE_64_URL_PREFIX |