このガイドでは、署名の作成方法と、署名の必須フィールドとオプションフィールドについて説明します。
署名を作成するには、署名する文字列を作成します。このガイドでは、これを署名付き値と呼びます。署名付き値には、保護するコンテンツ、署名付き値の有効期限などを記述するパラメータが含まれます。
署名付き値は、署名文字列の作成時に使用します。署名文字列を作成するには、署名付き値の非対称鍵 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 がウェブセーフな Base64 形式で有効になる、最大 5 つの IPv4 アドレスと IPv6 アドレスの CIDR 形式のリスト。たとえば、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 |