既定ポリシーを使用して署名付き Cookie を設定する - Amazon CloudFront

既定ポリシーを使用して署名付き Cookie を設定する

既定ポリシーを使用して署名付き Cookie を設定するには、以下のステップを実行します。署名を作成するには、「既定ポリシーを使用する署名付き Cookie の署名を作成する」を参照してください。

以下は、ファイルの URL のディストリビューションに関連付けられたドメイン名を使用する場合の、1 つの署名付き Cookie の Set-Cookie ヘッダーの例です。

Set-Cookie: CloudFront-Expires=1426500000; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly

以下は、ファイルの URL に代替ドメイン名 example.org を使用している場合の、1 つの署名付き Cookie の Set-Cookie ヘッダーの例です。

Set-Cookie: CloudFront-Expires=1426500000; Domain=example.org; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_; Domain=example.org; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/images/*; Secure; HttpOnly

URL で代替ドメイン名 (example.com など) を使用する場合は、Domain 属性を指定するかどうかにかかわらず、代替ドメイン名をディストリビューションに追加する必要があります。詳細については、トピック「ディストリビューション設定リファレンス」の「代替ドメイン名 (CNAME)」を参照してください。

既定ポリシーを使用する署名付き Cookie の署名を作成する

既定ポリシーを使用する署名付き Cookie の署名を作成するには、次の手順を実行します。

既定ポリシーを使用する署名付き Cookie のポリシーステートメントを作成する

既定ポリシーを使用する署名付き Cookie を設定した場合、CloudFront-Signature 属性は、ポリシーステートメントのハッシュ化および署名されたバージョンです。カスタムポリシーを使用する署名付き Cookie とは異なり、既定ポリシーを使用する署名付き Cookie では、Set-Cookie ヘッダーにポリシーステートメントを含めません。ポリシーステートメントを作成するには、以下の手順を実行します。

既定ポリシーを使用する署名付き Cookie のポリシーステートメントを作成するには
  1. 以下の JSON 形式および UTF-8 文字エンコードを使用してポリシーステートメントを構築します。すべての句読点および他のリテラル値を、指定されたとおりに正確に含めます。Resource および DateLessThan パラメータの詳細については、「署名付き Cookie の既定ポリシーのポリシーステートメントで指定する値」を参照してください。

    { "Statement": [ { "Resource": "base URL or stream name", "Condition": { "DateLessThan": { "AWS:EpochTime": ending date and time in Unix time format and UTC } } } ] }
  2. ポリシーステートメントからすべての空白 (タブと改行文字を含む) を削除します。アプリケーションコード内の文字列にエスケープ文字を含めることが必要になる場合があります。

署名付き Cookie の既定ポリシーのポリシーステートメントで指定する値

既定ポリシーのポリシーステートメントを作成する場合、以下の値を指定します。

リソース

クエリ文字列 (存在する場合) を含むベース URL。以下に例を示します。

https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes

Resource の日付形式は 1 つだけ指定できます。

次の点に注意してください。

  • プロトコル – 値は http:// または https:// で始まっている必要があります。

  • クエリ文字列パラメータ – クエリ文字列パラメータがない場合は、疑問符を省略します。

  • 代替ドメイン名 – URL で代替ドメイン名 (CNAME) を指定する場合は、ウェブページまたはアプリケーション内のファイルを参照するときに代替ドメイン名を指定する必要があります。ファイルの Amazon S3 URL を指定しないでください。

DateLessThan

URL の有効期限切れ日時。Unix 時間形式 (秒単位) および協定世界時 (UTC) で指定します。値を引用符で囲まないでください。

たとえば、UTC の 2015 年 3 月 16 日午前 10 時 00 分は、UNIX 時間形式の 1426500000 に変換されます。

この値は、CloudFront-Expires ヘッダーの Set-Cookie 属性の値と一致する必要があります。値を引用符で囲まないでください。

詳細については、「CloudFront が署名付き Cookie の有効期限切れ日時を確認するタイミング」を参照してください。

既定ポリシーのポリシーステートメントの例

署名付き Cookie 内で以下のポリシーステートメントの例を使用すると、ユーザーは、UTC の 2015 年 3 月 16 日午前 10 時 00 分までファイル https://d111111abcdef8.cloudfront.net/horizon.jpg にアクセスできます。

{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/horizon.jpg?size=large&license=yes", "Condition": { "DateLessThan": { "AWS:EpochTime": 1426500000 } } } ] }

既定ポリシーを使用する署名付き Cookie の署名を作成するためのポリシーステートメントに署名する

CloudFront-Signature ヘッダーの Set-Cookie 属性の値を作成するには、「既定ポリシーを使用する署名付き Cookie のポリシーステートメントを作成するには」で作成したポリシーステートメントをハッシュ化して署名します。

ポリシーステートメントのハッシュ化、署名、およびエンコードを行う方法の詳細および例については、以下のトピックを参照してください。